在xml定义的bean中,您可以定义两个类,如
<bean id="classA" class="ex.ClassA"/>
<bean id="classB" class="ex.classB"/>
然后在您的java实现中,您可以自动装配示例
中某个类的构造函数public class ClassA {
@autowired
public(ClassB classB){
this.classB = classB;
}
现在如何使用java配置bean来实现这一点,因为在示例中
@Bean
public ClassA classA(){
return new ClassB();
}
@Bean
public ClassB classB(){
return new ClassB()
}
编译器会警告Class a没有任何这样的构造函数,如何用java进行自动装配?
全部谢谢
答案 0 :(得分:1)
请注意,ClassB
bean隐式是单例。在@Configuration
类上使用注释Config
可确保Spring在ClassB
调用中返回classB()
bean的单例实例。
@Configuration
public class Config {
@Bean
public ClassA classA(){
return new ClassA( classB() );
}
@Bean
public ClassB classB(){
return new ClassB();
}
}
或者您可能更喜欢这种方法(需要Spring 4.2.1+)
@Configuration
@Import(ClassA.class)
public class Config {
@Bean
public ClassB classB(){
return new ClassB();
}
}
@Component
public class ClassA {
@Autowired
public ClassA(ClassB classB) {
...
}
}
答案 1 :(得分:0)
将您想要的bean作为参数传递给@Bean
方法,或者使用组件扫描隐式创建依赖bean。