- 浏览: 251560 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (289)
- java (72)
- oracle (3)
- mysql (5)
- spring (28)
- hibernate (2)
- osgi (0)
- linux (2)
- ExtJs (1)
- jvm (0)
- mybatis (7)
- 分布式 (11)
- MINA (6)
- apache+tomcat (13)
- js+htm (7)
- android (44)
- http (1)
- hbase+hdoop (0)
- memcache (13)
- search (27)
- 部署及性能 (12)
- mongoDB (2)
- 多线程 (12)
- 安全管理验证 (9)
- struts (1)
- webservice (0)
- easyUI (1)
- spring security (16)
- pattern (6)
- 算法 (2)
最新评论
-
lzh8189146:
CommonsHttpSolrServer这个类,现在是不是没 ...
CommonsHttpSolrServer -
xiaochanzi:
我按照你的方法试了下,tomcat6可以发布,但是访问任何网页 ...
基于内嵌Tomcat的应用开发 -
phoneeye:
麻烦你,如果是抄来的文章,请给出来源。谢谢
ant 两则技巧 -
neverforget:
转载不注明出处
Spring Security3.1登陆验证 替换 usernamepasswordfilter -
liang1022:
若不使用eclipse ,如何在命令行下 运行服务端程序 ?
WebService CXF学习(入门篇2):HelloWorld
一:使用ApplicationContext获得Bean
首先新建一个类,该类必须实现ApplicationContextAware接口,改接口有一个方法,public void setApplicationContext(ApplicationContext applicationContext)throws BeansException ,
也就是说框架会自动调用这个方法返回一个ApplicationContext对象。具体类如下:
- public class SpringContextUtils implements ApplicationContextAware{//Spring的工具类,用来获得配置文件中的bean
- private static ApplicationContext applicationContext = null;
- /***
- * 当继承了ApplicationContextAware类之后,那么程序在调用
- * getBean(String)的时候会自动调用该方法,不用自己操作
- */
- public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {
- SpringContextUtils.applicationContext = applicationContext;
- }
- public static ApplicationContext getApplicationContext() {
- return applicationContext;
- }
- /***
- * 根据一个bean的id获取配置文件中相应的bean
- * @param name
- * @return
- * @throws BeansException
- */
- public static Object getBean(String name) throws BeansException {
- return applicationContext.getBean(name);
- }
- /***
- * 类似于getBean(String name)只是在参数中提供了需要返回到的类型。
- * @param name
- * @param requiredType
- * @return
- * @throws BeansException
- */
- public static Object getBean(String name, Class requiredType) throws BeansException {
- return applicationContext.getBean(name, requiredType);
- }
- /**
- * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
- * @param name
- * @return boolean
- */
- public static boolean containsBean(String name) {
- return applicationContext.containsBean(name);
- }
- /**
- * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
- * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
- * @param name
- * @return boolean
- * @throws NoSuchBeanDefinitionException
- */
- public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
- return applicationContext.isSingleton(name);
- }
- /**
- * @param name
- * @return Class 注册对象的类型
- * @throws NoSuchBeanDefinitionException
- */
- public static Class getType(String name) throws NoSuchBeanDefinitionException {
- return applicationContext.getType(name);
- }
- /**
- * 如果给定的bean名字在bean定义中有别名,则返回这些别名
- * @param name
- * @return
- * @throws NoSuchBeanDefinitionException
- */
- public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
- return applicationContext.getAliases(name);
- }
- }
该类中有一个getBean(String name)方法,该方法用applicationContext去获得Bean实例,而applicationContext
是由系统启动时自动设置的。注意,在applicationContext.xml配置文件中需要把该类加上。<bean id="springUtils" class="en.estar.utils.SpringContextUtils"/>
二:通过BeanFactory接口获得Bean
也是新建一个类,不过该类需要实现BeanFactoryAware接口,该接口有一个方法public void setBeanFactory(BeanFactory beanFactory) throws BeansException;该方法是为了设置BeanFactory对象,系统会在启动的时候自动设置BeanFactory。具体代码如下:
- public class SpringBeanFactoryUtils implements BeanFactoryAware {
- private static BeanFactory beanFactory = null;
- private static SpringBeanFactoryUtils factoryUtils = null;
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- SpringBeanFactoryUtils.beanFactory = beanFactory;
- }
- public static BeanFactory getBeanFactory() {
- return beanFactory;
- }
- public static SpringBeanFactoryUtils getInstance(){
- if(factoryUtils==null){
- //factoryUtils = (SpringBeanFactoryUtils)beanFactory.getBean("springBeanFactoryUtils");
- factoryUtils = new SpringBeanFactoryUtils();
- }
- return factoryUtils;
- }
- public static Object getBean(String name){
- return beanFactory.getBean(name);
- }
- }
不过应该注意的是,改类中有一个getInstance方法,由于该代码是网上摘抄的,他提供了这么一个方法,目的是利用单例模式获得该类的一个实例,但由于getBean(String name)方法是静态的,所以用不用单例都无关紧要,经过测试,两种方法都行的通。另外一点就是必须把该类添加到applicationContext.xml的配置文件中<bean id="springBeanFactoryUtils" class="en.estar.utils.SpringBeanFactoryUtils"/>
三:在servlet中可以用WebApplicationContext类去获取Bean,具体做法是:
- WebApplicationContext webcontext = (WebApplicationContext)context.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
其中context是servlet的上下文,在servlet中可以通过this.getServletContext()或者request.getSession().getServletContext();获得servletContext。但是一点,spring的配置文件必须在WEB-INF下。WebApplicationContext 有一个方法getBean(String name);其实WebApplicationContext 就是ApplicationContext的另一种形式而已。
另外,在普通的java类中,即不是在servlet中可以用ContextLoader获得。ContextLoader是org.springframework.web.context包当中的一个类。
- private static WebApplicationContext webApplication = ContextLoader.getCurrentWebApplicationContext();
用这种方法就能获取一个WebApplicationContext 的对象。
最后经过测试,在重复100000次的基础上,第一二中方法只用了16毫秒,而第三种方法消耗了62毫秒,所以推荐使用第一二种方法。
发表评论
-
主题:Spring MVC3 国际化配置
2012-04-13 08:30 744http://www.iteye.com/topic/1122 ... -
使用 Spring Data JPA 简化 JPA 开发
2012-04-13 08:30 868http://www.ibm.com/developerwor ... -
跟我学spring3 电子书下载(完)
2012-04-13 08:30 605http://www.iteye.com/topic/1122 ... -
spring 读取applicationContext方式
2012-04-12 08:02 994spring 读取applicationCont ... -
spring javamail
2012-04-11 08:00 721spring javamail 博客分类 ... -
Quartz在Spring中动态设置cronExpression
2012-04-11 08:00 622Quartz在Spring中动态设置cronEx ... -
spring定时器用Annotation实现
2012-04-10 08:28 754spring定时器用Annotation实现 ... -
spring 3 中使用注解的方式来进行任务调度。
2012-04-10 08:28 709spring 3 中使用注解的方式来进行任务调度。 ... -
spring定时器如何配置
2012-04-10 08:28 1010有两种流行Spring定时器配置:Java的Timer类 ... -
Spring3.0中的异常处理配置方法
2012-04-10 08:28 757Spring3.0中的异常处理配置方法 ... -
在Spring3中使用注解(@Scheduled)创建计划任务
2012-04-09 09:49 1230在Spring3中使用注解(@Scheduled ... -
利用 Spring 和 EHCache 做方法缓存处理〔转〕
2012-04-09 09:49 809利用 Spring 和 EHCache 做方法缓存处理〔 ... -
springmvc rest框架搭建中遇到的问题
2012-03-16 14:37 936springmvc rest框架搭建中遇到的问题(一) ... -
spring 3.0 应用springmvc 构造RESTful URL 详细讲解
2012-03-16 14:36 658http://badqiu.iteye.com/blog/47 ... -
MyBatis3整合Spring3的Transaction事务处理
2012-03-07 08:18 883MyBatis3整合Spring3的Transacti ... -
spring mvc 注解验证springmodules common validator (注解验证)
2012-03-02 09:21 1989转载:http://blog.csdn.net/h ... -
spring结合quartz的定时的2种方式
2012-03-02 09:21 743spring结合quartz的定时的2种方式 ... -
spring结合quartz的执行多任务的实现
2012-03-02 09:21 1831spring结合quartz的执行多任务的实现 ... -
在Spring中使用JTA事务管理(二)
2012-02-28 08:15 970在Spring中使用JTA事务管理(二) (20 ... -
spring 事务 不能rollback的问题终于解决了
2012-03-19 08:24 835spring 事务 不能rollback的问题 ...
相关推荐
一个Spring框架的bean工具,可以在多线程环境下手动创建bean。使用时请注意在spring配置文件下加入<bean id="springBeanUtils" class="com.hujin.common.util.SpringBeanUtils"/>
Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...
Spring 集成 AXIS2 的 Web service 配置方法 Spring 是一个流行的 Java 应用程序...总结来说,Spring 集成 AXIS2 的 Web 服务配置方法可以提高开发效率和系统可维护性,该配置方法可以应用于企业级应用程序的开发中。
它既能应用于WEB应用也能应用于非WEB应用。在 本文的示例程序 里,我将演示如何将Acegi应用于WEB应用程序。通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息
第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。 第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架...
Web 应用中模板技术与 JSP 技术的对比 输入验证与数据绑定 异常处理 国际化支持 WebWork2 & Spring Quick Start WebWork 高级特性 Action 驱动模式 XWork 拦截器体系 输入校验 国际化支持 Webwork2...
它既能应用于WEB应用也能应用于非WEB应用。在 本文的示例程序 里,我将演示如何将Acegi应用于WEB应用程序。通过这个例子详细介绍如何配置Acegi的各个组件,同时介绍如何扩展Acegi 使其能够从数据库中读取配置信息。
JSP 中Spring Bean 的作用域详解 Bean元素有一个scope属性,用于定义Bean的作用域,该属性有如下五个值: 1>singleton: 单例模式,在整个spring IOC容器中,单例模式作用域...这种作用域只有在Web应用中使用Spring容
整合其他ORM框架 第4篇 业务层应用 第13章 任务调度和异步执行器 第14章 JavaMail发送邮件 第15章 在Spring中使用JMS 第16章 在Spring中开发Web Service 第17章 使用Acegi实施应用系统安全 第...
13.6.4 Web应用程序中调度器的启动和关闭问题 13.7 小结 第14章 使用OXM进行对象XML映射 14.1 认识XML解析技术 14.1.1 什么是XML 14.1.2 XML的处理技术 14.2 XML处理利器:XStream 14.2.1 XStream概述 14.2.2 快速...
这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续...
Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...
spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类...
配置完成之后,即可通过 WebApplicationContextUtils.getWebApplicationContext 方法在 Web 应用中获取 ApplicationContext 引用。例如: ```java ApplicationContext ctx = WebApplicationContextUtils.get...
3.1 在Spring IoC容器里配置Bean 3.1.1 问题描述 3.1.2 解决方案 3.1.3 实现方法 3.2 实例化Spring IoC容器 3.2.1 问题描述 3.2.2 解决方案 3.2.3 实现方法 3.3...
它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制...
Spring框架是一个开放源代码的J2EE应用程序框架,是对bean的生命周期进行管理的轻量级容器。 适用:中高级开发 Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork等众多Web框架组合使用,并且可以与Swing...
讲解了spring的6种作用域:singleton(单例)、non-singleton(也称 prototype),Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean
这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续...