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后處理器主要功能是補充一些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)文章
@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決
這篇文章主要介紹了@Transactional跟@DS動態(tài)數(shù)據(jù)源注解沖突的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
使用Java將Excel中的數(shù)字轉(zhuǎn)換為文本或?qū)⑽谋拘蛿?shù)字轉(zhuǎn)換為數(shù)字
在 Excel 中,數(shù)字有時會以文本的形式存儲,這可能會影響數(shù)據(jù)的計算、排序和處理,無論是將數(shù)字轉(zhuǎn)換為文本,還是將文本型數(shù)字轉(zhuǎn)換為數(shù)字,這兩種操作在處理 Excel 數(shù)據(jù)時都非常常見且重要,本文將介紹如何使用 Java 完成這兩個任務(wù),需要的朋友可以參考下2025-12-12
java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結(jié)
在使用java的集合類遍歷數(shù)據(jù)的時候,在某些情況下可能需要對某些數(shù)據(jù)進行刪除,下面這篇文章主要給大家介紹了關(guān)于java遍歷途中修改數(shù)據(jù)及刪除數(shù)據(jù)的方法總結(jié),需要的朋友可以參考下2023-10-10
解決springboot 2.x 里面訪問靜態(tài)資源的坑
這篇文章主要介紹了解決springboot 2.x 里面訪問靜態(tài)資源的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SSM框架中entity mapper dao service controll
這篇文章主要介紹了SSM框架中entity mapper dao service controller層的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

