009 ApplicationContextAware 让Bean持有IOC容器的引用

一.概述

Aware在java之中一个比较合理的翻译是注入.

看到注入,我们就明白了,现在我们做的就是将容器注入到Bean之中.

另外在spring之中,有各种Aware接口,其功能和使用方式几乎一致.


 

二 为和需要注入容器

我们在spring整合这种组件的时候,通常组件之内都需要获取容器的状态,这个时候就需要获取容器的引用.


三.ApplicationContextAware接口

下面看一个例子:

public class BeanAware implements ApplicationContextAware {
  private ApplicationContext context = null;
  @Override
  public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    System.out.println("spring 自动帮我们注入IOC容器的引用");
    this.context = applicationContext;
  }
  

  public ApplicationContext getIOC() {
    return context;
  }

}

配置:

<bean id="user" class="com.trek.ioc.bean.User"></bean>
<bean id="beanAware" class="com.trek.aware.BeanAware"></bean>

使用:

ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
BeanAware beanAware = (BeanAware) context.getBean("beanAware");
ApplicationContext ioc = beanAware.getIOC();
User user = (User) ioc.getBean("user");
user.say();

我们首先获取ioc容器,从里面取出实现了ApplicationContextAware接口的对象,

从中调用getIOC()方法获取了Bean.


 

四 . 实现原理

spring在创建Bean的时候,会自动扫描Bean实现的接口,如果spring扫描到一些特定的接口的实现类,那么spring

就会自动调用一些方法.

这个就是Aware的真正含义.

 

posted @ 2018-03-10 20:16  最爱五仁月饼  阅读(163)  评论(0编辑  收藏  举报