Spring中BeanFactory接口的作用小結
BeanFactory是Spring IOC的最核心與最底層的接口,它負責實例化、配置和管理應用程序中的對象(這些對象被稱為 Bean)。可以將它理解為一個高級的、可配置的對象工廠,它的主要工作就是生產和管理 Bean。
1.準備配置類
@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("構造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("構造 Bean2()");
}
}2.beanFactory實現注入
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對象構造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);
處理之后的結果如下,其中包括了beanFactory的后處理器。

到此這篇關于Spring中BeanFactory接口的作用小結的文章就介紹到這了,更多相關Spring BeanFactory接口內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringCloud?Config之動態(tài)配置管理與高可用治理方式
這篇文章主要介紹了SpringCloud?Config之動態(tài)配置管理與高可用治理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-05-05
SpringBoot集成tika實現word轉html的操作代碼
Tika是一個內容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實現word轉html的操作,需要的朋友可以參考下2024-06-06
SpringBoot JdbcTemplate批量操作的示例代碼
本篇文章主要介紹了SpringBoot JdbcTemplate批量操作的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04

