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

BeanNameAware和BeanFactoryAware接口的更多相关文章
- spring扩展点之四:Spring Aware容器感知技术,BeanNameAware和BeanFactoryAware接口,springboot中的EnvironmentAware
aware:英 [əˈweə(r)] 美 [əˈwer] adj.意识到的;知道的;觉察到的 XXXAware在spring里表示对XXX感知,实现XXXAware接口,并通过实现对应的set-XXX ...
- BeanNameAware接口和BeanFactoryAware接口
迄今为止,所接触到的Bean都是“无知觉”的,就像黑客帝国中机械工厂里面“养殖”的人类,他们虽然能完成一定的功能,但是根本不知道自己在工厂(BeanFactory)中的代号(id),或者自己是在哪个工 ...
- BeanNameAware接口和BeanFactoryAware接口(转)
迄今为止,所接触到的Bean都是“无知觉”的,就像黑客帝国中机械工厂里面“养殖”的人类,他们虽然能完成一定的功能,但是根本不知道自己在工厂(BeanFactory)中的代号(id) ...
- spring之BeanFactoryAware接口
springBeanFactoryAware (转)要直接在自己的代码中读取spring的bean,我们除了根据常用的set外,也可以通过spring的BeanFactoryAware接口实现,只要实 ...
- Spring 的微内核与FactoryBean扩展机制--转载
作者:江南白衣 原文地址: http://www.blogjava.net/calvin/archive/2005/08/30/11099.html http://www.blogjava.net/c ...
- Spring Resource框架体系介绍
Resource介绍 在使用spring作为容器进行项目开发中会有很多的配置文件,这些配置文件都是通过Spring的Resource接口来实现加载,但是,Resource对于所有低级资源的访问都不够充 ...
- Spring Aware接口---BeanNameAware BeanFactoryAware ApplicationContextAware
前言 对于应用程序来说,应该尽量减少对spring api的耦合程度,然后有时候为了运用spring提供的一些功能,有必要让bean了解spring容器对其管理的细节信息,如让bean知道在容器中是以 ...
- BeanFactoryAware和BeanNameAware
实现 BeanFactoryAware 接口的 bean 可以直接访问 Spring 容器,被容器创建以后,它会拥有一个指向 Spring 容器的引用. BeanFactoryAware 接口只有一个 ...
- Spring8:一些常用的Spring Bean扩展接口
前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...
随机推荐
- ES6,ES5,ES3,对比学习~
在简书上看到一个博主写的文章,感觉很有用.留下:https://www.jianshu.com/p/287e0bb867ae Excuse me?这个前端面试在搞事!https://zhuanlan ...
- Linux程序性能分析和火焰图
Linux程序性能分析和火焰图 Linux程序的性能分析工具数量比较多,涉及到整个操作系统的方方面面,可能是开源的原因吧,相对于Windows来说丰富太多.其中应用分析性能方面Dtrace, Syst ...
- NetBeans远程调试Linux c++ 11项目
NetBeans远程调试Linux c++ 11项目 由于好多原因,好久没有写博客了,随着c++ 11的普及率越来越高,开发c++ 项目的人也越来越多,可以说c++ 11 给了c++ 这门语言第二次生 ...
- mysql的执行过程
1 总流程 https://www.cnblogs.com/annsshadow/p/5037667.html 2 优化器 https://www.cnblogs.com/olinux/p/5 ...
- git for linux使用
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 “sudo apt-get install git” 第二步: 创建GitHub帐号 第三步: 生成ssh key,使用 ...
- 【论文速读】XiangBai_TIP2018_TextBoxes++_A Single-Shot Oriented Scene Text Detector
XiangBai_TIP2018_TextBoxes++_A Single-Shot Oriented Scene Text Detector 作者和代码 Minghui Liao, Baoguang ...
- Vue系列之 => webpack结合vue使用
安装 npm i vue -S , 在html页面中放一个容器绑定到el上. 修改webpack.config.js , 在与entry , output节点平级加上 resolve 节点. res ...
- LeetCode9 回文数
题目链接:https://leetcode-cn.com/problems/palindrome-number/ 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数 ...
- Git抽取版本之间的差异,打包解压
patch.sh文件代码 #!/bin/bash MY_SAVEIFS=$IFS #IFS=$(echo -en "\n\b") IFS=$'\n' build_dir=" ...
- linux下wrk的安装
wrk是linux下开源的性能测试工具,并且只能在linux下运行,下面介绍下安装教程(以ubantu18.04环境为例): 1.预先安装git,如:apt install git 2.从git上拉取 ...