gpt4 book ai didi

java - @Autowired 注解在 Spring 中由 BeanPostProcessor 处理吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:26 25 4
gpt4 key购买 nike

我声称:

  1. Spring 从 java config 读取 bean 定义
  2. BeanFactory 从定义创建 bean
  3. 然后通过BeanPostProcessors注入(inject)依赖

但碰巧不准确:

@Configuration
@ImportResource("classpath:spring_config.xml")
public class JavaConfig {

@Autowired
MyBean bean;

@Bean
public Boolean isBeanAutowired(){
return bean != null;
}
}

isBeanAutowired bean 被初始化为 true

问题:

Autowired 逻辑是如何在上下文中的所有 bean 初始化之前工作的?

最佳答案

是的 @AutowiredBeanPostProcessor 处理。请参阅 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor 了解更多详细信息,如果您尝试了解更多信息,请将其作为切入点。

https://github.com/spring-projects/spring-framework/blob/master/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java

http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.html

最后,Spring 能够分析一个 bean(需要连接的其他 bean)的依赖关系并确定一个顺序,在这个顺序中 bean 将被初始化。因此,可以在创建 bean 后直接 Autowiring 。有一个异常(exception),当 Spring 尝试解决循环依赖时会发生这种情况。然后 Spring 将创建两个 bean 并将它们 Autowiring 到彼此。不过,这只是有限的。

关于java - @Autowired 注解在 Spring 中由 BeanPostProcessor 处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com