我想自动装配一个组件(仍然使用@Autowired注释),但不要求它有@Component(或其他类似的注释)。我该怎么做?
public class A {
@Autowired
private class B b;
}
@Component
public class B {
}
为了允许自动装配A类而不需要创建A,这将是很方便的,除非我们需要它(否则通过使用类名的反射来实现)。
答案 0 :(得分:6)
注入和自动装配不需要 @Component
。他们需要豆子。 @Component
声明带注释的类型应该为它生成一个bean。您可以通过其他方式定义bean:在XML上下文配置中使用<bean>
声明,在@Bean
类中使用@Configuration
方法等等。
你的最后一句话没有多大意义。您无法在不创建bean的情况下处理bean中的注入目标。您也无法在不创建bean的情况下注入bean。 (应用于作用域,bean可以引用目标源/代理而不是实际实例。)也许你想要@Lazy
。
答案 1 :(得分:2)
我不确定,如果我正确地理解了你的问题。但是如果你想通过一些注释或xml定义注入bean B
而不标记bean A
,你可以使用 SpringBeanAutowiringSupport
public class A {
@Autowired
private class B b;
public A{
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
}