Spring中ApplicationContextAware的用法

一、这个接口有什么用?

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

二、怎么用?

举个例子吧:

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

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

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

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


1

<p style="line-height: normal;"><listener><br>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><br> </listener><br></p>

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

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


1

<p style="line-height: normal;"><context-param><br>        <param-name>contextConfigLocation</param-name><br>        <param-value>classpath:conf/app-context.xml</param-value><br> </context-param><br></p>

注意:


1

<p style="line-height: normal;"><param-name>contextConfigLocation</param-name><br></p>

是不能改变的。

2、方法类AppUtil的处理

方法类AppUtil实现ApplicationContextAware接口:


1

<p style="line-height: normal;">public class AppUtil<br>  implements ApplicationContextAware<br></p>

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

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


1

<p style="line-height: normal;">private static ApplicationContext appContext;<br></p>

 实现ApplicationContextAware接口的默认方法:


1

<p style="line-height: normal;"public void setApplicationContext(ApplicationContext paramApplicationContext)<br>    throws BeansException<br>  {<br>    appContext = paramApplicationContext;<br>  }<br></p>

 

3、在spring的配置文件中,注册方法类AppUtil

严格上来说,方法类AppUtil是一个bean,而且从步骤2中我们不难发现,之所以方法类AppUtil能够灵活自如地获取ApplicationContext

就是因为spring能够为我们自动地执行了setApplicationContext。但是,spring不会无缘无故地为某个类执行它的方法的,所以,就很有必要通过注册方法类AppUtil的方式告知spring有这样子一个类的存在。

其实,方法很简单,就是将方法类AppUtil作为一个普通的bean在spring的配置文件中进行注册:


1

<p style="line-height: normal;"><bean id="appUtil" class="com.htsoft.core.util.AppUtil"/><br></p>

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


1

<p style="line-height: normal;">public static Object getBean(String paramString)<br>  {<br>    return appContext.getBean(paramString);<br>  }<br></p>

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


1

<p style="line-height: normal;">CompanyService localCompanyService = (CompanyService)getBean("companyService");<br></p>

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


1

<p style="line-height: normal;"><bean id="companyService" class="com.kaiwii.service.system.impl.CompanyServiceImpl"><br>        <constructor-arg index="0" ref="companyDao"/>      <br></bean><br></p>

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~

http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt379

时间: 2024-09-27 04:53:50

Spring中ApplicationContextAware的用法的相关文章

Spring中基于Java的配置@Configuration和@Bean用法

Spring中为了减少xml中配置,可以创建一个配置类(例如ExampleConfiguration)来对bean进行配置. 1.配置spring配置文件来启用Java注解 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.o

spring入门(4) spring中Bean的生命周期总结

Spring中Bean的生命周期,在学习spring的过程中bean的生命周期理解对学习spring有很大的帮助,下面我就分别介绍在 ApplicationContext和BeanFactory中Bean的生命周期. 1.在ApplicationContext中Bean的生命周期 生命周 期执行的过程如下: 1.需找所有的bean根据bean定义的信息来实例化bean 2.使用依赖注入,spring按bean 定义信息配置bean的所有属性 3.若bean实现了BeanNameAware接口,工

Spring中事件处理的小技巧

Spring中提供一些Aware相关的接口,BeanFactoryAware.ApplicationContextAware.ResourceLoaderAware.ServletContextAware等等,其中最常用到的是ApplicationContextAware.实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例.ApplicationContextAware提供了publishEvent()方法,实

解析Java中如何获取Spring中配置的bean

本篇文章是对在Java中如何获取Spring中配置的bean进行了详细的分析介绍,需要的朋友参考下   一.什么是Spring?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 二.如何在程序中获取Spring配置的bean呢?方法一:在初始化时保存ApplicationContext对象代码: 复制代码 代码如下: ApplicationContext ac = new FileSystemXmlApplicationContex("applicationContex

Spring中的AOP(七)——基于XML配置文件方式的AOP

    除了前面介绍的基于JDK1.5的注解方式来定义切面,切入点和增强处理外,Spring AOP也允许直接使用XML配置文件来管理它们.在JDK1.5之前,只能使用配置文件的方式来管理,在Spring2.X后提供了一个新的aop命名空间来定义切面.切入点和增强处理.     相比之下,使用XML配置文件方式有如下优点: 如果没有使用JDK1.5以上版本,只能使用XML配置文件的方式 对早期的Spring用于来说更加习惯,而且这种方式允许使用纯粹的POJO来支持AOP 采用XML配置方式时,我

Spring中ApplicationContext的事件机制

   ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理.如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发.     Spring的事件框架有如下两个重要的成员: ApplicationE

Spring中的AOP(六)——定义切入点和切入点指示符

定义切入点     在前文(点击查看)中使用到的AdviceTest类中同一个切点(即* com.abc.service.*.advice*(..)匹配的连接点)却重复定义了多次,这显然不符合软件设计的原则,为了解决这个问题,AspectJ和Spring都提供了切入点的定义.所谓定义切入点,其实质就是为一个切入点表达式起一个名称,从而允许在多个增强处理中重用该名称.     Spring AOP只支持以Spring Bean的方法执行组作为连接点,所以可以把切入点看作所有能和切入表达式匹配的Be

详析Spring中依赖注入的三种方式_java

前言 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中.依赖注入的另一种说法是"控制反转",通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做. 在Sprin

Java类获取Spring中bean的5种方式_java

获取Spring中的bean有很多种方式,再次总结一下:第一种:在初始化时保存ApplicationContext对象 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml"); ac.getBean("beanId"); 说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring.第二种:通过Spring提供的工