【问题标题】:Spring automatic default definition of beans (without component scan)Spring自动默认定义bean(无组件扫描)
【发布时间】:2012-12-12 15:47:21
【问题描述】:

为了减少我的 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 注释的对象,并且我更喜欢使用手术刀方法而不是组件扫描霰弹枪。

【问题讨论】:

    标签: java spring dependency-injection guice


    【解决方案1】:

    我认为你已经非常成功了。您可以拥有<context:component-scan> 以及一些其他基于 xml 的 bean 定义,用于您无法控制的类。 Guice 方法是为这些类绑定一个Provider。选择你的毒药。最近,我发现自己也试图从这些 DI 框架中挤出更多的魔力,结果却发现有些事情不能自动运行是有充分理由的。否则会很危险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      相关资源
      最近更新 更多