使用大量bean管理依赖注入应用程序的复杂性

Rob*_*anu 5 spring dependency-injection guice

我正在开发一个Spring应用程序,它有大量的bean - 数百个 - 而且使用和文档变得非常繁琐.

我对任何具有大量bean的DI启用应用程序的经验感兴趣,这有助于维护,文档和一般用法.

虽然该应用程序是基于Spring的,带有几个上下文文件,但我仍然愿意听取有关任何DI容器和一般DI的建议.

Wil*_*tas 6

您可以使用组件扫描和自动装配功能来显着减少Spring XML配置的数量.

例:


<beans>
  <!-- Scans service package looking for @Service annotated beans -->
  <context:component-scan base-package="my.root.package.service"/>

</beans>
Run Code Online (Sandbox Code Playgroud)

必须对您的服务类进行注释才能自动扫描:


package my.root.package.service;

@Service("fooService") public class FooServiceImpl implements FooService{

}

您还可以使用@Autowired批注告诉Spring如何注入bean依赖项:


package my.root.package.service;

@Service("barService")
public class BarServiceImpl implements BarService{
    //Foo service injected by Spring
    @Autowired
    private FooService fooService;

    //...
}

Run Code Online (Sandbox Code Playgroud)


Bri*_*new 4

我发现以下内容很有用:

  1. 将 Spring 配置拆分为多个独立配置,并使用 Spring 的导入工具导入配置依赖项(请参阅此处,第 3.2.2.1 节)。这样你就拥有了一组可以根据需要组合或分解的配置,并且它们都是独立的(所有依赖项都将是显式的并被引用)
  2. 使用支持 Spring 的 IDE,并允许您通过点击 bean(引用/名称、往返源代码)来浏览配置。Intellij在这方面工作得很好(我认为版本 7 及更高版本)。我怀疑 Eclipse 也会做类似的事情。
  3. 修改您要在 where注入的内容。您可能希望将多个 Bean 注入重构为一个复合或“元”Bean 或更大的组件。或者您可能会发现您曾经认为需要注入的组件从未改变,或者从未要求可注入性(用于测试、作为策略实施等)

我曾经使用过一个巨大的 Spring 安装,有数百(数千?)个 bean。拆分配置使生活更易于管理,并简化了测试/创建独立流程等。但我认为 Intellij 附带的 Intellij Spring 集成带来了最大的不同。拥有支持 Spring 的 IDE 可以节省大量时间。