为了减少 Spring 配置中的样板数量(不使用组件扫描等),我想以“约定优于配置”的类似 Guice 的模式运行 Spring。
在 Guice 中,您不需要显式配置 bean。我可以创建如下所示的 bean 结构,Guice 将“做正确的事情”:
class Foo {
@Inject
public Foo(Bar bar) {
}
}
class Bar {
@Inject
public Bar(Blah blah) {
}
}
class Blah {
public Blah() {}
}
在 Spring 中,我需要一个关联的 @Configuration
类,该类将充满样板文件,如下所示:
class Config {
@Bean public void foo() {
return new Foo();
}
// etc.
}
我怀疑这可能通过自定义 BeanFactory 实现,但如果可以通过 Spring 中的其他方式实现这一点,我希望避免走这条路。
@ComponentScan
将是一种替代方案,但我希望它能够与我控制范围之外的没有适当 spring @Component
注释的对象一起使用,并且我宁愿使用更多的手术刀方法,而不是组件扫描的霰弹枪。
最佳答案
我想你已经差不多做到了。您可以拥有<context:component-scan>
以及一些您无法控制的类的进一步基于 xml 的 bean 定义。 Guice 的方法是绑定(bind) Provider
对于这些类(class)。选择你的毒药。最近,我发现自己也试图从这些 DI 框架中榨取更多魔力,结果却意识到有些事情不能自动工作是有充分理由的。如果有其他情况的话就会很危险。
关于java - Spring自动默认定义bean(无需组件扫描),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13843428/