为了减少我的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() {}
}
在春季,我需要有一个相关的@Configuration
类,它充满了这样的样板:
class Config {
@Bean public void foo() {
return new Foo();
}
// etc.
}
我怀疑这可以通过自定义 BeanFactory 来实现,但如果在 Spring 中可以通过其他方式做到这一点,我想避免走这条路。
@ComponentScan
将是一种替代方案,但我希望它适用于我无法控制的对象,这些对象没有适当的弹簧@Component
注释,并且我更喜欢使用更多的手术刀方法,而不是组件扫描的霰弹枪。
我想你已经差不多搞定了。您可以为控件之外的类提供<context:component-scan>
以及一些其他基于 xml 的 Bean 定义。Guice 方法是为这些类绑定Provider
。选择你的毒药。最近,我发现自己也试图从这些 DI 框架中榨取更多的魔力,只是意识到为什么有些事情不会自动工作是有充分理由的。如果有其他事情的话,会很危险。