文档章节

ApplicationContextAware使用理解

高宇霆
 高宇霆
发布于 2015/12/11 15:09
字数 628
阅读 47
收藏 0

 一、这个接口有什么用?

当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。

二、怎么用?

举个例子吧:

例如我有一个方法类AppUtil,这个方法类中需要使用到的ApplicationContext中的某个bean(companyService)。

1、因为spring要建立属于自己的容器,就必须要加载自己的配置文件。

     这个时候,需要注册ContextLoaderListener或者这个类的子类。

在web.xml加上以下的信息:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

当然,这样子的话只会读取默认路径下的application.xml配置文件的。如果需要读取特定路径下的配置文件。需要在web.xml中

添加如下信息。可以参考我的示例,指定配置文件,如下:

<context-param>
    <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接口:

public class AppUtil
    implements ApplicationContextAware

为方法类AppUtil增加一个静态的成员ApplicationContext类型的对象。以后方法类AppUtil获取ApplicationContext,就是通过读取这个

成员变量的。具体如下所示:

private static ApplicationContext appContext;


实现ApplicationContextAware接口的默认方法:

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的配置文件中进行注册:

<bean id="appUtil" class="com.htsoft.core.util.AppUtil"/>

4、使用静态的成员ApplicationContext类型的对象,appContext,来调用其他bean。在方法类AppUtil中增加如下方法:

public static Object getBean(String paramString)
 {
     return appContext.getBean(paramString);
 }

那么,在

方法类AppUtil中就能够灵活地调用其他任何一个bean了,例如:

CompanyService localCompanyService = (CompanyService)getBean("companyService");

注:配置文件中关于companyService的内容:

<bean id="companyService" class="com.kaiwii.service.system.impl.CompanyServiceImpl">
    <constructor-arg index="0" ref="companyDao"/>      
</bean>


本文转自:http://blog.csdn.net/kaiwii/article/details/6872642

 


本文转载自:http://blog.csdn.net/kaiwii/article/details/6872642

高宇霆
粉丝 0
博文 4
码字总数 215
作品 0
南京
私信 提问
Spring中ApplicationContextAware使用说明

Spring 中提供一些Aware相关接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,实作这些 Aware接口的Bean在被初始之后,可以取得一些相...

Josean_Luo
2014/06/07
10.1K
0
关于一段JAVA代码的理解(Spring)

DataCenterService是一个接口,规定了一些对数据库的操作函数。 类LocalSpringContext继承ApplicationContextAware 。 刚学习Java和相关框架,这段不太懂.. 1. 接口也能有对象吗? 一般这么写...

Aww
2015/03/13
707
8
非注入方式取得spring注入bean的util类实现

实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入ApplicationContext的实例。 这样在spring配置文件加载时会自动执行ApplicationContextAware的setApplicationContext方法,将...

伊人梦醉
2016/06/20
330
0
Spring 定时任务重复执行的问题分析

Spring 定时任务重复执行的问题分析 背景:使用quartz时客户现场不知道为什么跑着跑着就停了,后来决定换成spring定时任务。 当使用spring定时任务时莫名奇妙的就是同一时间重复执行多次任务...

huxy534
2017/05/11
0
0
Mockito测试静态注入

@Component public class ApplyNodesDefines implements ApplicationContextAware{ private static BaseDao baseDao; private static volatile Map> typeToProcessNodes = new HashMap<>(); ......

xiaxiaodongfang
2018/01/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

iStatistica Pro for Mac(系统监控工具) v1.1.2

iStatistica Mac破解版推荐给大家!iStatistica Pro Mac是一款功能强大的系统监控工具,实时监控CPU,内存,网络,磁盘卡,帮你轻松删除不需要的文件和文件夹,释放电脑内存,提升运行速度。...

云不若
30分钟前
6
0
Vim和Ctags提示和技巧[关闭]

我刚刚使用我的Vim(或者更确切地说是gVim)安装了Ctags (以帮助进行C ++开发),并希望找到您最喜欢的命令,宏,快捷方式,以及随之而来的提示...... 分享你最好的武器库。 在Vim开发中你会...

技术盛宴
33分钟前
8
0
tensorlfow安装

系统环境 nv-jetson-nano-sd-card-image-r32.3.1.zip 1 基本工具安装 默认安装了python 3.6.8,需要安装如下基本软件 sudo apt updatesudo apt install curlcurl https://bootstrap.pyp...

JosiahMg
33分钟前
5
0
彻底修改maven项目工程的名称

1

观海562
52分钟前
6
0
整数反转(力扣)

整数反转 一、题目描述 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 ...

迪迪迪王
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部