Spring實(shí)現(xiàn)Aware接口,完成對(duì)IOC容器的感知

aware主要有以下感知接口,只要在程序里實(shí)現(xiàn)相關(guān)接口,就可以獲取該aware相關(guān)的信息

BeanNameAware,可以在Bean中得到它在IOC容器中的Bean的實(shí)例的名字。
BeanFactoryAware,可以在Bean中得到Bean所在的IOC容器,從而直接在Bean中使用IOC容器的服務(wù)。
ApplicationContextAware,可以在Bean中得到Bean所在的應(yīng)用上下文,從而直接在Bean中使用上下文的服務(wù)。
MessageSourceAware,在Bean中可以得到消息源。
ApplicationEventPublisherAware,在bean中可以得到應(yīng)用上下文的事件發(fā)布器,從而可以在Bean中發(fā)布應(yīng)用上下文的事件。
ResourceLoaderAware,在Bean中可以得到ResourceLoader,從而在bean中使用ResourceLoader加載外部對(duì)應(yīng)的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());
        }

結(jié)果:

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

BeanFactoryAware:可以在Bean中得到Bean所在的IOC容器,從而直接在Bean中使用IOC容器的服務(wù)。

@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工廠進(jìn)行bean操作:

        @Autowired
        private BeanFactoryAwareTest beanFactoryAwareTest;
 public void aware()  {  
      System.out.println("獲取相應(yīng)的bean:"+beanFactoryAwareTest.getBeanFactory().getBean("beanFactoryAwareTest"));
        }

結(jié)果:

獲取相應(yīng)的bean:com.xebest.util.aware.BeanFactoryAwareTest@3c20f83d

其他的aware用同樣的方式重寫set方法,然后在添加get獲取到對(duì)象,實(shí)現(xiàn)相關(guān)操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容