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()));
        }

  • 相关阅读:
    elasticsearch-5.1.1 安装的问题
    idea 新建New Module时Maven的列表加载不出来
    使用X-Pack插件来进行权限控制
    Groovy学习记录-------Groovy安装/配置
    学习使用Apollo配置中心
    Apollo配置中心介绍
    自定义的GitLab 头像无法正常显示以及URL总是指向localhost
    2020/2/19
    一九八四
    Python 进阶
  • 原文地址:https://www.cnblogs.com/xiaozhuanfeng/p/10790695.html
Copyright © 2011-2022 走看看