我正在开发一个 Spring 应用程序,它有大量的 bean - 数百个 - 使用和记录变得非常麻烦。
我对您使用具有大量 bean 的支持 DI 的应用程序的任何经验感兴趣,这将有助于可维护性、文档和一般使用。
尽管该应用程序是基于 Spring 的,带有几个上下文文件,但我愿意听取有关任何 DI 容器以及一般 DI 的建议。
我正在开发一个 Spring 应用程序,它有大量的 bean - 数百个 - 使用和记录变得非常麻烦。
我对您使用具有大量 bean 的支持 DI 的应用程序的任何经验感兴趣,这将有助于可维护性、文档和一般使用。
尽管该应用程序是基于 Spring 的,带有几个上下文文件,但我愿意听取有关任何 DI 容器以及一般 DI 的建议。
您可以使用组件扫描和自动装配功能来显着减少 Spring XML 配置的数量。
例子:
<beans>
<!-- Scans service package looking for @Service annotated beans -->
<context:component-scan base-package="my.root.package.service"/>
</beans>
您的服务类必须进行注释才能被自动扫描:
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;
//...
}
我发现以下内容很有用:
我曾经使用过一个巨大的 Spring 安装,有数百个(数千个?)bean。拆分配置使生活更易于管理,并简化了测试/创建独立流程等。但我认为 Intellij 附带的 Intellij Spring 集成带来了最大的不同。拥有 Spring-aware IDE 可以节省大量时间。
正如@Wilson Freitas 所说,使用自动装配。我每天都在使用一个系统,该系统有几千个弹簧管理的 bean,主要使用自动装配。但我认为“保留整体情况”的概念有点错误。随着系统的增长,您不能期望以与在较小系统上相同的方式执行此操作。使用 @Autowiring 会强制您使用比基于 xml 的 spring 更强的类型,这再次意味着您可以使用 IDE 的依赖项跟踪功能来导航依赖项。
我真的认为,当涉及到 spring 配置时,认为您需要了解太多的“完整”情况是不理想的。您应该专注于您的代码及其依赖项。可管理性和可维护性是通过良好地组织代码、良好地命名和管理耦合来实现的;即使您不使用弹簧,所有适用的东西。Spring 应该不会有太大变化,并且随着 JSR-330 的批准,依赖注入甚至可能看起来会在运行时环境的“底层”进一步蔓延。
我们的策略是: