[英]Spring Dependency Injection via @Configuration, @Bean and @Component
[英]Proper way of providing dependency to spring @Bean in @Configuration
在@Configuration类中,可以通过使用带有@Bean批注的方法来创建spring bean
@Component
public class Foo {
}
public class Bar {
private Foo foo;
public Bar(Foo foo) {
this.foo = foo;
}
}
@Configuration
public class BarConfig {
@Bean
public Bar bar(Foo foo) {
return new Bar(foo);
}
}
但是将Foo注入BarConfig类并以这种方式使用它还可以使您创建Bar:
@Component
public class Foo {
}
public class Bar {
private Foo foo;
public Bar(Foo foo) {
this.foo = foo;
}
}
@Configuration
public class BarConfig {
@Autowired
private Foo foo;
@Bean
public Bar bar() {
return new Bar(foo); // bar() without args
}
}
从春天的角度来看,它们之间有什么区别吗? 第二个错误吗? 它会中断什么或什么行不通的?
我设法找到了2nd,Bar没有对foo的可见依赖,但这会影响什么吗? 刷新/重新加载spring上下文会在重新制作bar时获取foo中的更改,不是吗?
这两种自动装配之间的唯一区别是必须编写的代码量。
我建议您仅使用第一个选项,因为它更短。
如果必须将@Qualifier
注释与@Autowired
以及要注入的对象一起在单独的配置中声明,则第二个选项适用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.