zoukankan      html  css  js  c++  java
  • 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的真正含义.

  • 相关阅读:
    wcdb中使用rowid做查询条件
    [转载]Linux下断开SSH连接后,让程序继续在后台执行
    Mac OS X wants to use the “system” keychain 的解决方案
    wcdb的主键和唯一性
    type(),dir(),getattr(),hasattr(), isinstance()用法
    获取昨天日期
    二分法
    三次握手和四次挥手
    py2和py3之间的不同
    flask 接收参数小坑
  • 原文地址:https://www.cnblogs.com/trekxu/p/8541790.html
Copyright © 2011-2022 走看看