spring源码解析之注解配置后处理器对@Configuration、@Autowired、@Value、@Inject、@PreDestroy、@PostConstruct等注解的处理

1.简介

spring框架在从配置类中读取bean定义时,会对一些注解进行处理

比如遇到@Configuration注解,需要读取配置类中@Bean注解的方法,定义为Bean,

遇到@Autowired注解,需要自动装配依赖。

这些都是通过BeanDefinitionRegistryPostProcessor、BeanPostProcessor等后处理器来实现的

1.1 AnnotatedBeanDefinitionReader

AnnotatedBeanDefinitionReader用来直接加载配置类,其构造函数中有:

    public AnnotatedBeanDefinitionReader(BeanDefinitionRegistry registry, Environment environment) {
		Assert.notNull(registry, "BeanDefinitionRegistry must not be null");
		Assert.notNull(environment, "Environment must not be null");
		this.registry = registry;
		/* 条件评估 */
		this.conditionEvaluator = new ConditionEvaluator(registry, environment, null);
		/* 为bean工厂添加注解配置后处理器,处理Configuration等注解 */
		AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);
	}

其中,AnnotationCon

猜你喜欢

转载自blog.csdn.net/qq_27868061/article/details/109077739