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

时间:2014-06-23 18:51:53

标签: java spring

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

public class A {

    @Autowired
    private class B b;

}

@Component
public class B {

}

为了允许自动装配A类而不需要创建A,这将是很方便的,除非我们需要它(否则通过使用类名的反射来实现)。

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

public class A {

    @Autowired
    private class B b;

    public A{
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 
    }

}