Spring中ApplicationContextAware的用法
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt379
一、这个接口有什么用?
当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。
二、怎么用?
举个例子吧:
例如我有一个方法类AppUtil,这个方法类中需要使用到的ApplicationContext中的某个bean(companyService)。
1、因为spring要建立属于自己的容器,就必须要加载自己的配置文件。
这个时候,需要注册ContextLoaderListener或者这个类的子类。
在web.xml加上以下的信息:
1
2
3
|
< listener >
< listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class >
</ listener >
|
当然,这样子的话只会读取默认路径下的application.xml配置文件的。如果需要读取特定路径下的配置文件。需要在web.xml中
添加如下信息。可以参考我的示例,指定配置文件,如下:
1
2
3
4
|
< context-param >
< param-name >contextConfigLocation</ param-name >
< param-value >classpath:conf/app-context.xml</ param-value >
</ context-param >
|
注意:
1
|
< param-name >contextConfigLocation</ param-name >
|
是不能改变的。
2、方法类AppUtil的处理
方法类AppUtil实现ApplicationContextAware接口:
1
2
|
public class AppUtil
implements ApplicationContextAware
|
为方法类AppUtil增加一个静态的成员ApplicationContext类型的对象。以后方法类AppUtil获取ApplicationContext,就是通过读取这个
成员变量的。具体如下所示:
private static ApplicationContext appContext;
实现ApplicationContextAware接口的默认方法:
1
2
3
4
5
|
public void setApplicationContext(ApplicationContext paramApplicationContext)
throws BeansException
{
appContext = paramApplicationContext;
}
|
3、在spring的配置文件中,注册方法类AppUtil
严格上来说,方法类AppUtil是一个bean,而且从步骤2中我们不难发现,之所以方法类AppUtil能够灵活自如地获取ApplicationContext
就是因为spring能够为我们自动地执行了setApplicationContext。但是,spring不会无缘无故地为某个类执行它的方法的,所以,就很有必要通过注册方法类AppUtil的方式告知spring有这样子一个类的存在。
其实,方法很简单,就是将方法类AppUtil作为一个普通的bean在spring的配置文件中进行注册:
1
|
< bean id = "appUtil" class = "com.htsoft.core.util.AppUtil" />
|
4、使用静态的成员ApplicationContext类型的对象,appContext,来调用其他bean。在方法类AppUtil中增加如下方法:
1
2
3
4
|
public static Object getBean(String paramString)
{
return appContext.getBean(paramString);
}
|
那么,在方法类AppUtil中就能够灵活地调用其他任何一个bean了,例如:
1
|
CompanyService localCompanyService = (CompanyService)getBean( "companyService" );
|
注:配置文件中关于companyService的内容:
1
2
3
|
< bean id = "companyService" class = "com.kaiwii.service.system.impl.CompanyServiceImpl" >
< constructor-arg index = "0" ref = "companyDao" />
</ bean >
|
转载于:https://www.cnblogs.com/grefr/p/6088105.html
Spring中ApplicationContextAware的用法相关推荐
- Spring中jdbcTemplate的用法实例
一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象. 第一种方式:我们可以在自己 ...
- Spring中Aware的用法以及实现
Aware 在Spring当中有一些内置的对象是未开放给我们使用的,例如Spring的上下文ApplicationContext.环境属性Environment,BeanFactory等等其他的一些内 ...
- Spring中HibernateCallback的用法(转)
Hibernate的复杂用法HibernateCallback HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.Hiber ...
- Spring中RedirectAttributes的用法
RedirectAttributes 是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的的工具类.他有两种带参的方式: 第一种: redirectAttribut ...
- spring中的JdbcTemplate——JdbcTemplate的最基本用法
spring中的JdbcTemplate JdbcTemplate的作用: 它就是用于和数据库交互的,实现对表的CRUD操作 JdbcTemplate 概述 它是 spring 框架中提供的一个对象, ...
- Spring中@Resource与@Autowired、@Qualifier的用法与区别
Spring中@Resource与@Autowired.@Qualifier的用法与区别 1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法 ...
- Spring中@Async用法总结
转载自 https://blog.csdn.net/blueheart20/article/details/44648667 引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的 ...
- spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...
<spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...
- spring中@Autowired用法
@Autowired注解是Spring中非常重要且常见的,接下来就简要的介绍一下它的用法. @Autowired默认是通过set方法,按照类型自动装配JavaBean,set方法可省略不写,它主要是修 ...
最新文章
- Bootstrap(导航条)
- 【转】DICOM图像像素值(灰度值)转换为CT值
- Python学习笔记之字典(三)
- FF:与吉利控股的合作取得实质性进展 双方技术团队正紧密对接
- 没学会python怎么学_恕我直言!这么久还没学会python,那是因为你还没有看过这本书...
- iif sql_SQL IIF语句概述
- 水泵调速c语言实验程序,C语言实验最原始.doc
- python点云数据处理_python处理点云数据并生成三维点云模型
- 【亲测】超级外链SEO工具源码,可发9600条优质外链
- vue实现中英文切换
- 光纤配线柜如何选择,又该怎么安装?
- 华为od统一考试B卷【We Are A Team】C++ 实现
- 微信文章实现代码高亮
- 看懂nfl定理需要什么知识_NFL球队为什么不经常通过?
- 数据研究:淘宝流量与转化率隐藏的那些秘密
- matlab画出拟合的曲线,matlab画出拟合曲线
- 第三方分享QQ QQZONE
- 面试题:请你说说P2P贷款app的业务流程是怎样的?
- 航母级app手机淘宝是如何炼成的丨独家解密
- 中国社交:打不倒的微信,输不了的抖音