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中处理注入目标。 您也无法在不创建bean的情况下注入bean。 (应用于作用域,bean可能指的是目标源/代理而不是实际的实例。)也许你想要@Lazy
。