java - 为什么在 Spring 配置类中的 @Bean 方法上不需要 @Autowired?

标签 java spring dependency-injection

为什么这样做:

@Configuration
public class MyConfig {

  @Bean
  public A getA() {
    return new A();
  }

  @Bean               // <-- Shouldn't I need @Autowired here?
  public B getB(A a) {
    return new B(a);
  }  
}

谢谢!

最佳答案

@Autowire 允许您将 bean 从上下文注入(inject)到“外部世界”,外部世界就是您的应用程序。 由于使用 @Configuration 类,您处于“上下文世界”中,因此无需显式 Autowiring (从上下文查找 bean)。

类比是从给定实例访问方法。当您在实例范围内时,无需编写 this 来访问实例方法,但外部世界必须使用实例引用。

编辑

当您编写@Configuration 类时,您正在为将由IOC 创建的bean 指定元数据。

另一方面,

@Autowire 注释允许您在应用程序中注入(inject)初始化 bean,而不是元数据。因此,不需要显式注入(inject),因为在 Configuration 类中您没有使用 Beans。

关于java - 为什么在 Spring 配置类中的 @Bean 方法上不需要 @Autowired?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32078600/

相关文章:

java - 从注入(inject)的实例 CDI 获取准确的对象

dependency-injection - Autofac可以自动自绑定(bind)吗?

spring - 依赖查找 &Ioc 之间有什么关系

java - 如何在不使用压缩的情况下将 Bitmap 转换为 ByteArray?

java - 实例化对象和子/父​​类的关系

java - 事务的传播行为

java - 使用 Spring :eval display property value in jsp

java - 美元符号替换不工作 Java

java - 明智地使用 bufferedReader

java - 如何通过注释在spring mvc 3中设置 header 无缓存