我正在开发一个Spring应用程序,它有大量的bean - 数百个 - 而且使用和记录起来非常麻烦。
我对任何具有大量bean的DI启用应用程序的经验感兴趣,这有助于维护,文档和一般用途。
虽然应用程序是基于Spring的,带有几个上下文文件,但我仍然愿意听取有关任何DI容器和DI的建议。
答案 0 :(得分:6)
您可以使用component scan and autowiring功能大幅减少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;
//...
}
答案 1 :(得分:4)
我发现以下内容有用:
我曾经使用过大量的Spring安装,有数百(数千?)个bean。拆分配置使生活更易于管理,简化了测试/创建独立流程等。但我认为Intellij附带的Intellij Spring集成产生了最大的不同。拥有一个支持Spring的IDE是一个重要的节省时间。
答案 2 :(得分:3)
正如@Wilson Freitas所说,使用自动装配。我每天使用一个系统,该系统有几千个春季托管bean,主要使用自动装配。但我认为“保留整体情况”的概念略显错位。随着系统的发展,您不能期望以与在较小系统上相同的方式执行此操作。使用@Autowiring会强制您使用比基于xml的spring更强的类型,这再次意味着您可以使用IDE的依赖关系跟踪功能来导航依赖关系。
我真的认为,当涉及弹簧配置时,认为你需要来理解太多的“完整”图片是不是最理想的。你应该专注于你的代码和它的依赖。通过很好地组织这些代码,很好地命名并管理耦合,可以实现可管理性和可维护性;所有适用的东西即使你不使用弹簧也适用。 Spring不应该有太大变化,并且在JSR-330的批准下,甚至可能看起来依赖注入将在运行时环境的“幕后”进一步蔓延。
答案 3 :(得分:1)
我们的策略是: