美文网首页spring
Spring实现Aware接口,完成对IOC容器的感知

Spring实现Aware接口,完成对IOC容器的感知

作者: java面试收割机 | 来源:发表于2017-09-20 14:45 被阅读9次

aware主要有以下感知接口,只要在程序里实现相关接口,就可以获取该aware相关的信息

BeanNameAware,可以在Bean中得到它在IOC容器中的Bean的实例的名字。
BeanFactoryAware,可以在Bean中得到Bean所在的IOC容器,从而直接在Bean中使用IOC容器的服务。
ApplicationContextAware,可以在Bean中得到Bean所在的应用上下文,从而直接在Bean中使用上下文的服务。
MessageSourceAware,在Bean中可以得到消息源。
ApplicationEventPublisherAware,在bean中可以得到应用上下文的事件发布器,从而可以在Bean中发布应用上下文的事件。
ResourceLoaderAware,在Bean中可以得到ResourceLoader,从而在bean中使用ResourceLoader加载外部对应的Resource资源。

1、BeanNameAware:获取bean的名称,如:

@Service
public class BeanNameAwareTest implements BeanNameAware {

    private String name;
    
    @Override
    public void setBeanName(String name) {
        this.name = name;
    }

    public String getBeanName() {
        return this.name;
    }
}

获取bean:

            @Autowired
        private BeanNameAwareTest beanNameAwareTest;
        public void aware()  {  
             System.out.println( "=========:"+beanNameAwareTest.getBeanName());
             beanNameAwareTest.setBeanName("beanName");
             System.out.println( "====================:"+beanNameAwareTest.getBeanName());
        }

结果:

=========:beanNameAwareTest
=========:beanName

BeanFactoryAware:可以在Bean中得到Bean所在的IOC容器,从而直接在Bean中使用IOC容器的服务。

@Service
public class BeanFactoryAwareTest implements BeanFactoryAware {

    private BeanFactory beanFactory;

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
            this.beanFactory = beanFactory;
    }
    
    public BeanFactory getBeanFactory()  {
          return this.beanFactory ;
    }
}

获取bean工厂进行bean操作:

        @Autowired
        private BeanFactoryAwareTest beanFactoryAwareTest;
 public void aware()  {  
      System.out.println("获取相应的bean:"+beanFactoryAwareTest.getBeanFactory().getBean("beanFactoryAwareTest"));
        }

结果:

获取相应的bean:com.xebest.util.aware.BeanFactoryAwareTest@3c20f83d

其他的aware用同样的方式重写set方法,然后在添加get获取到对象,实现相关操作

相关文章

  • Spring实现Aware接口,完成对IOC容器的感知

    aware主要有以下感知接口,只要在程序里实现相关接口,就可以获取该aware相关的信息 BeanNameAwar...

  • Spring Aware容器感知技术

    ​ Spring Aware是什么 Spring提供Aware接口能让Bean感知Spring容器的存在,即让Be...

  • Spring高级应用 之Aware类

    1.Aware类为Bean感知Spring容器的存在提供支持,实现Aware类便可利用利用Spring容器中的各种...

  • Spring之Aware

    Aware Aware提供了一种让用户实现了Aware接口的自定义bean能够感知到被spring管理的资源的能力...

  • Spring学习

    IOC (接口) 1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂; 2、Spring提供的IOC容器...

  • IoC容器系列的设计与实现(基于Spring5.0.4)

    在Spring IoC容器的设计中,两个主要容器系列 实现BeanFactory接口的简单容器系列这系列容器只实现...

  • 一、Spring核心篇

    第2章Spring Framework的核心:IoC容器的实现 2.1Spring IoC容器概述 1.IOC容器...

  • 2018-06-08

    IOC 容器 IOC容器和beans Spring实现了IOC (Inversion of Control)(控制...

  • spring源码解读-BeanFactory体系结构

    一.BeanFactory BeanFactory是Spring IOC容器的鼻祖,是IOC容器的基础接口,所有的...

  • Aware Mode

    Aware接口 Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以...

网友评论

    本文标题:Spring实现Aware接口,完成对IOC容器的感知

    本文链接:https://www.haomeiwen.com/subject/bihosxtx.html