弹簧自动默认定义 bean(无组件扫描)



为了减少我的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 框架中榨取更多的魔力,只是意识到为什么有些事情不会自动工作是有充分理由的。如果有其他事情的话,会很危险。

最新更新