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

  • 相关阅读:
    ibatis核心内容概述
    ibatis selectKey
    setTimeout ;setInterval
    <select>设置multiple="multiple"属性后 下拉框全部展开了 不再是折叠的怎么回事
    $.ajax()实例
    html页面不显示中文
    sublime卡顿
    error_reporting
    js笔记
    怎样查看MYSQL数据库的端口号
  • 原文地址:https://www.cnblogs.com/trekxu/p/8541790.html
Copyright © 2011-2022 走看看