Spring中BeanFactory接口的作用小結(jié)
BeanFactory是Spring IOC的最核心與最底層的接口,它負(fù)責(zé)實例化、配置和管理應(yīng)用程序中的對象(這些對象被稱為 Bean)。可以將它理解為一個高級的、可配置的對象工廠,它的主要工作就是生產(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實現(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對象構(gòu)造beanDefinition對象,beanFactory把這些bean的定義收集起來并注冊管理。
3.打印對象
打印的對象只有Config,但是里面的@Bean注入的對象并沒有生效。
4.配置beanFactory后處理器
通過配置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); } }
其中通過AnnotationConfigUtils可以注入常用的beanFactory的后處理器,
AnnotationConfigUtils.registerAnnotationConfigProcessors(beanFactory);
處理之后的結(jié)果如下,其中包括了beanFactory的后處理器。
到此這篇關(guān)于Spring中BeanFactory接口的作用小結(jié)的文章就介紹到這了,更多相關(guān)Spring BeanFactory接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中關(guān)于getProperties方法的使用
這篇文章主要介紹了java中關(guān)于getProperties方法的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12SpringSecurityOAuth2實現(xiàn)微信授權(quán)登錄
微信的登錄功能是用戶注冊和使用微信的必經(jīng)之路之一,而微信授權(quán)登錄更是方便了用戶的登錄操作,本文主要介紹了SpringSecurityOAuth2實現(xiàn)微信授權(quán)登錄,感興趣的可以了解一下2023-09-09關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景
這篇文章主要介紹了關(guān)于jvm的垃圾回收器以及觸發(fā)full gc的場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04SpringCloud?Config之動態(tài)配置管理與高可用治理方式
這篇文章主要介紹了SpringCloud?Config之動態(tài)配置管理與高可用治理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05SpringBoot集成tika實現(xiàn)word轉(zhuǎn)html的操作代碼
Tika是一個內(nèi)容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內(nèi)容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實現(xiàn)word轉(zhuǎn)html的操作,需要的朋友可以參考下2024-06-06SpringBoot JdbcTemplate批量操作的示例代碼
本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04Java進(jìn)階之高并發(fā)核心Selector詳解
前幾篇文章介紹了Java高并發(fā)的一些基礎(chǔ)內(nèi)容,認(rèn)識了Channel,Buffer和Selector的基本用法,有了感性認(rèn)識之后,來看看Selector的底層是如何實現(xiàn)的。,需要的朋友可以參考下2021-05-05