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的真正含义.

  • 相关阅读:
    SLF4J + logback 实现日志输出和记录
    Log4j配置文件
    通过maven的<profile>标签,打包不同配置的变量包
    单点登录(SSO)原理
    MyBatis拦截器(插件)分页
    导航栏pop拦截
    swift 基础小结01 --delegate、Optional、GCD的使用、request请求、网络加载图片并保存到沙箱、闭包以及桥接
    转载-iOS SDK开发
    leaks工具查找内存泄露
    weex stream 之fetch的get、post获取Json数据
  • 原文地址:https://www.cnblogs.com/trekxu/p/8541790.html
Copyright © 2011-2022 走看看