Spring如何在不使用@Component或其他衍生产品的情况下自动assembly组件

我想自动assembly一个组件(仍然使用@Autowired注释),但不要求它有@Component(或其他类似的注释)。 我该怎么办?

public class A { @Autowired private class B b; } @Component public class B { } 

这将是方便的,以便允许自动assemblyA类而不需要创建A,除非我们需要它(否则通过使用类名reflection来实现)。

我不确定,如果我正确理解你的问题。 但是如果你想通过一些注释或xml定义注入bean B而不标记bean A ,你可以使用SpringBeanAutowiringSupport

 public class A { @Autowired private class B b; public A{ SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); } } 

注入和自动assembly不需要 @Component 。 他们需要豆子。 @Component声明带注释的类型应该为它生成一个bean。 您可以通过其他方式定义bean:在XML上下文配置中使用声明,在@Configuration类中使用@Bean方法等。

你的最后一句话没有多大意义。 如果不创建bean,则无法在bean中处理注入目标。 您也无法在不创建b​​ean的情况下注入bean。 (应用于作用域,bean可能指的是目标源/代理而不是实际的实例。)也许你想要@Lazy