Spring—ApplicationContextAware
来源:互联网 发布:cad软件是什么软件 编辑:程序博客网 时间:2024/06/04 18:36
项目用到了ApplicationContextAware,通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。
我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。
使用方法如下:
1.实现ApplicationContextAware接口:
2.在Spring的配置文件中配置这个类,Spring容器会在加载完Spring容器后把上下文对象调用这个对象中的setApplicationContext方法:
3.在web项目中的web.xml中配置加载Spring容器的Listener:
4.在项目中即可通过这个SpringContextHelper调用getBean()方法得到Spring容器中的对象了。
参考:http://blog.csdn.net/majian_1987/article/details/11170841
=========================================================================================================================
一、这个接口有什么用?
当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。
二、怎么用?
举个例子吧:
例如我有一个方法类AppUtil,这个方法类中需要使用到的ApplicationContext中的某个bean(companyService)。
1、因为spring要建立属于自己的容器,就必须要加载自己的配置文件。
这个时候,需要注册ContextLoaderListener或者这个类的子类。
在web.xml加上以下的信息:
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
当然,这样子的话只会读取默认路径下的application.xml配置文件的。如果需要读取特定路径下的配置文件。需要在web.xml中
添加如下信息。可以参考我的示例,指定配置文件,如下:
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/app-context.xml</param-value>
</context-param>
注意:<param-name>contextConfigLocation</param-name>是不能改变的。
2、方法类AppUtil的处理
方法类AppUtil实现ApplicationContextAware接口:
implements ApplicationContextAware
为方法类AppUtil增加一个静态的成员ApplicationContext类型的对象。以后方法类AppUtil获取ApplicationContext,就是通过读取这个
成员变量的。具体如下所示:
实现ApplicationContextAware接口的默认方法:
throws BeansException
{
appContext = paramApplicationContext;
}
3、在spring的配置文件中,注册方法类AppUtil
严格上来说,方法类AppUtil是一个bean,而且从步骤2中我们不难发现,之所以方法类AppUtil能够灵活自如地获取ApplicationContext
就是因为spring能够为我们自动地执行了setApplicationContext。但是,spring不会无缘无故地为某个类执行它的方法的,所以,就很有必要
通过注册方法类AppUtil的方式告知spring有这样子一个类的存在。
其实,方法很简单,就是将方法类AppUtil作为一个普通的bean在spring的配置文件中进行注册:
4、使用静态的成员ApplicationContext类型的对象,appContext,来调用其他bean。在方法类AppUtil中增加如下方法:
{
return appContext.getBean(paramString);
}
那么,在
方法类AppUtil中就能够灵活地调用其他任何一个bean了,例如:
注:配置文件中关于companyService的内容:
<constructor-arg index="0" ref="companyDao"/>
</bean>
参考:http://blog.csdn.net/kaiwii/article/details/6872642
- Spring—ApplicationContextAware
- spring ApplicationContextAware
- Spring ApplicationContextAware
- Spring ApplicationContextAware
- Spring-ApplicationContextAware
- Spring ApplicationContextAware
- Spring-ApplicationContextAware
- Spring:ApplicationContextAware
- java spring Using ApplicationContextAware
- Spring中的ApplicationContextAware使用
- Spring ApplicationContextAware 获取bean
- Spring的ApplicationContextAware解析
- spring ApplicationContextAware接口介绍
- Spring的ApplicationContextAware解析
- Spring ApplicationContextAware详解
- Spring ApplicationContextAware接口
- Spring ApplicationContextAware使用方法
- ApplicationContextAware 获取Spring 上下文
- 【转载】httpd c++
- java.net.BindException: Address already in use: JVM_Bind <null>:8080
- Eclipse下使用prefix="c"
- Hive函数大全
- 一些小基础,容易忘记得.
- Spring—ApplicationContextAware
- NKOJ P3684 GCD的个数
- 正则表达式替换括号内的内容
- 废弃的数据交互方式——jsonp、ajax长连接
- 全选操作
- JavaScript基础——实现自动登录的安全提醒
- 工具类之Javafx倒计时时钟
- 利用python 进行数据分析全书总结
- JasperReport| TTF和TTC字体介绍