zoukankan      html  css  js  c++  java
  • BeanNameAware和BeanFactoryAware接口

    平时写代码很少去实现这两个接口,这里只是做下了解,方便读Spring源码。

    BeanNameAware接口作用:让Bean对Name或id有知觉
    package com.example.demo.biz.service;
    
    import org.springframework.beans.factory.BeanNameAware;
    import org.springframework.stereotype.Service;
    
    /**
     * BeanNameAware作用:让Bean对Name有知觉
     */
    @Service
    public class BizService implements BeanNameAware {
        private String beanName;
    
        @Override
        public void setBeanName(String s) {
            this.beanName = s;
        }
    
        public String getBeanName() {
            return beanName;
        }
    }

    测试

    package com.example.demo.biz.service;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import javax.annotation.Resource;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class BeanNameAwareTest {
    
        @Resource
        private BizService bizService;
    
        @Test
        public void test1(){
            System.out.println(bizService.getBeanName());
        }
    }

    结果:

     BeanFactoryAware接口:让Bean获取配置他们的BeanFactory的引用。

    修改下上面的例子

    package com.example.demo.biz.service;
    
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.beans.factory.BeanFactoryAware;
    import org.springframework.beans.factory.BeanNameAware;
    import org.springframework.stereotype.Service;
    
    /**
     * BeanNameAware作用:让Bean对Name有知觉
     */
    @Service
    public class BizService implements BeanNameAware, BeanFactoryAware {
        private String beanName;
    
        private BeanFactory factory;
    
        @Override
        public void setBeanName(String s) {
            this.beanName = s;
        }
    
        public String getBeanName() {
            return beanName;
        }
    
        @Override
        public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
            this.factory = beanFactory;
        }
    
        public BeanFactory getFactory() {
            return factory;
        }
    
        @Override
        public String toString() {
            return "----------------------->";
        }
    }
        @Test
        public void test2(){
            System.out.println(bizService.getFactory().getBean(bizService.getBeanName()));
        }

  • 相关阅读:
    js图片轮换
    PHP如何打造一个高可用高性能的网站呢?
    php中浮点数计算问题
    jQuery ajax()使用serialize()提交form数据
    js最新手机号码、电话号码正则表达式
    swoole是如何实现任务定时自动化调度的?
    Facebook的“零售吸引力”,互联网营销 狼人:
    Google勇敢新世界,互联网营销 狼人:
    Facebook的成功之道,互联网营销 狼人:
    李彦宏分享百度危机中如何“弯道超车”,互联网营销 狼人:
  • 原文地址:https://www.cnblogs.com/xiaozhuanfeng/p/10790695.html
Copyright © 2011-2022 走看看