Spring中BeanFactory接口的作用小結(jié)
BeanFactory是Spring IOC的最核心與最底層的接口,它負(fù)責(zé)實(shí)例化、配置和管理應(yīng)用程序中的對(duì)象(這些對(duì)象被稱為 Bean)。可以將它理解為一個(gè)高級(jí)的、可配置的對(duì)象工廠,它的主要工作就是生產(chǎn)和管理 Bean。
1.準(zhǔn)備配置類
@Configuration
static class Config{
@Bean
public Bean1 bean1(){
return new Bean1();
}
@Bean
public Bean2 bean2(){
return new Bean2();
}
}
static class Bean1{
private static final Logger log = LoggerFactory.getLogger(Bean1.class);
public Bean1(){
log.debug("構(gòu)造bean1");
}
/* @Autowired
private Bean2 bean2;
public Bean2 getBean2(){
return bean2;
}*/
}
static class Bean2{
private static final Logger log = LoggerFactory.getLogger(Bean2.class);
public Bean2(){
log.debug("構(gòu)造 Bean2()");
}
}2.beanFactory實(shí)現(xiàn)注入
public class TestBeanFactory {
public static void main(String[] args) {
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
//bean的定義(class,scope,初始化,銷毀)
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Config.class).setScope("singleton").getBeanDefinition();
beanFactory.registerBeanDefinition("config",beanDefinition);
for(String name:beanFactory.getBeanDefinitionNames()){
System.out.println(name);
}
}首先使用BeanDefinitionBuilder為bean對(duì)象構(gòu)造beanDefinition對(duì)象,beanFactory把這些bean的定義收集起來(lái)并注冊(cè)管理。
3.打印對(duì)象

打印的對(duì)象只有Config,但是里面的@Bean注入的對(duì)象并沒有生效。
4.配置beanFactory后處理器
通過(guò)配置beanFactory的后處理器,可以解析配置類里面注解配置的類并注入到BeanFactory工廠里面。
public static void main(String[] args) {
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
//bean的定義(class,scope,初始化,銷毀)
AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(Config.class).setScope("singleton").getBeanDefinition();
beanFactory.registerBeanDefinition("config",beanDefinition);
//給BeanFactory一些常用的后處理器
AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);
//BeanFactory后處理器主要功能是補(bǔ)充一些bean的定義
beanFactory.getBeansOfType(BeanFactoryPostProcessor.class).values().stream().forEach(beanFactoryPostProcessor -> {
beanFactoryPostProcessor.postProcessBeanFactory(beanFactory);
});
for(String name:beanFactory.getBeanDefinitionNames()){
System.out.println(name);
}
}其中通過(guò)AnnotationConfigUtils可以注入常用的beanFactory的后處理器,
AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);
處理之后的結(jié)果如下,其中包括了beanFactory的后處理器。

到此這篇關(guān)于Spring中BeanFactory接口的作用小結(jié)的文章就介紹到這了,更多相關(guān)Spring BeanFactory接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中關(guān)于getProperties方法的使用
這篇文章主要介紹了java中關(guān)于getProperties方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄
微信的登錄功能是用戶注冊(cè)和使用微信的必經(jīng)之路之一,而微信授權(quán)登錄更是方便了用戶的登錄操作,本文主要介紹了SpringSecurityOAuth2實(shí)現(xiàn)微信授權(quán)登錄,感興趣的可以了解一下2023-09-09
SpringBoot中集成Swagger2及簡(jiǎn)單實(shí)用
使用Swagger你只需要按照它的規(guī)范去定義接口及接口相關(guān)的信息,再通過(guò)Swagger衍生出來(lái)的一系列項(xiàng)目和工具,就可以做到生成各種格式的接口文檔,以及在線接口調(diào)試頁(yè)面等等,這篇文章主要介紹了SpringBoot中集成Swagger2,需要的朋友可以參考下2023-06-06
關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場(chǎng)景
這篇文章主要介紹了關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
SpringCloud?Config之動(dòng)態(tài)配置管理與高可用治理方式
這篇文章主要介紹了SpringCloud?Config之動(dòng)態(tài)配置管理與高可用治理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
SpringBoot集成tika實(shí)現(xiàn)word轉(zhuǎn)html的操作代碼
Tika是一個(gè)內(nèi)容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內(nèi)容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實(shí)現(xiàn)word轉(zhuǎn)html的操作,需要的朋友可以參考下2024-06-06
SpringBoot JdbcTemplate批量操作的示例代碼
本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Java進(jìn)階之高并發(fā)核心Selector詳解
前幾篇文章介紹了Java高并發(fā)的一些基礎(chǔ)內(nèi)容,認(rèn)識(shí)了Channel,Buffer和Selector的基本用法,有了感性認(rèn)識(shí)之后,來(lái)看看Selector的底層是如何實(shí)現(xiàn)的。,需要的朋友可以參考下2021-05-05

