详见: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的用法相关推荐

  1. Spring中jdbcTemplate的用法实例

    一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.        第一种方式:我们可以在自己 ...

  2. Spring中Aware的用法以及实现

    Aware 在Spring当中有一些内置的对象是未开放给我们使用的,例如Spring的上下文ApplicationContext.环境属性Environment,BeanFactory等等其他的一些内 ...

  3. Spring中HibernateCallback的用法(转)

    Hibernate的复杂用法HibernateCallback HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式.Hiber ...

  4. Spring中RedirectAttributes的用法

    RedirectAttributes 是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的的工具类.他有两种带参的方式: 第一种: redirectAttribut ...

  5. spring中的JdbcTemplate——JdbcTemplate的最基本用法

    spring中的JdbcTemplate JdbcTemplate的作用: 它就是用于和数据库交互的,实现对表的CRUD操作 JdbcTemplate 概述 它是 spring 框架中提供的一个对象, ...

  6. Spring中@Resource与@Autowired、@Qualifier的用法与区别

    Spring中@Resource与@Autowired.@Qualifier的用法与区别 1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法 ...

  7. Spring中@Async用法总结

    转载自 https://blog.csdn.net/blueheart20/article/details/44648667 引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的 ...

  8. spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...

    <spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...

  9. spring中@Autowired用法

    @Autowired注解是Spring中非常重要且常见的,接下来就简要的介绍一下它的用法. @Autowired默认是通过set方法,按照类型自动装配JavaBean,set方法可省略不写,它主要是修 ...

最新文章

  1. Bootstrap(导航条)
  2. 【转】DICOM图像像素值(灰度值)转换为CT值
  3. Python学习笔记之字典(三)
  4. FF:与吉利控股的合作取得实质性进展 双方技术团队正紧密对接
  5. 没学会python怎么学_恕我直言!这么久还没学会python,那是因为你还没有看过这本书...
  6. iif sql_SQL IIF语句概述
  7. 水泵调速c语言实验程序,C语言实验最原始.doc
  8. python点云数据处理_python处理点云数据并生成三维点云模型
  9. 【亲测】超级外链SEO工具源码,可发9600条优质外链
  10. vue实现中英文切换
  11. 光纤配线柜如何选择,又该怎么安装?
  12. 华为od统一考试B卷【We Are A Team】C++ 实现
  13. 微信文章实现代码高亮
  14. 看懂nfl定理需要什么知识_NFL球队为什么不经常通过?
  15. 数据研究:淘宝流量与转化率隐藏的那些秘密
  16. matlab画出拟合的曲线,matlab画出拟合曲线
  17. 第三方分享QQ QQZONE
  18. 面试题:请你说说P2P贷款app的业务流程是怎样的?
  19. 航母级app手机淘宝是如何炼成的丨独家解密
  20. 中国社交:打不倒的微信,输不了的抖音

热门文章

  1. .NET EFCore之增删改查
  2. JavaScript中函数的种类
  3. 光辉之章事件有哪些常规操作?天谕手游事后的补偿真的很安慰?
  4. 剑网三谜题终于揭开,药宗四系开合得当,有输出有治疗
  5. SpringMVC常见面试题(5个最常见面试题,回答超详细)
  6. vscode for mac怎样关闭自动更新
  7. Linux Shell编程第四篇case语句
  8. 实例讲解如何通过Oracle成功发送邮件-入门基础
  9. 久坐的危害和解决方式
  10. 学习Knowledge Graph Embedding Based Question Answering代码笔记