我正在研究一个弹簧应用程序,该应用程序拥有大量豆子(数百个豆子),而且使用和文档非常繁琐。

我对您对拥有大量豆类的DI-abled应用程序的经验感兴趣,这将有助于可维护性,文档和一般用法。

尽管该应用程序是基于弹簧的上下文文件的,但我愿意聆听有关任何DI容器和关于DI的建议。

有帮助吗?

解决方案

我发现以下内容是有用的:

  1. 将您的弹簧配置分为多个独立配置,并使用Spring的导入功能来导入配置依赖项(请参阅 这里, ,第3.2.2.1节)。这样,您就可以根据需要组合或拆卸一组配置,并且它们都是自我依赖的(所有依赖项都会明确并引用)
  2. 使用弹簧感知的IDE,并允许您通过bean上的Point-n-lick(参考/名称,to-to-infrom源代码)导航。 Intellij 在此(我认为版本7及以后)非常有效。我怀疑Eclipse会做类似的事情。
  3. 修订 什么 您正在注射 在哪里. 。您可能需要将多个豆子重构为一个复合材料或“元”豆或较大的组件。或者,您可能会发现您曾经认为需要注入的组件从未改变过,或者从不要求注射性(用于测试,以策略等实施等)

我曾经使用一个巨大的春季装置,其中有数百万个豆子。将配置分开使生活变得更加易于管理,并简化了测试/创建独立的过程等。但是我认为Intellij随附的Intellij Spring集成造成了最大的不同。拥有春季的IDE是一个主要的时间节省。

其他提示

您可以使用 组件扫描和自动扫描 大大减少弹簧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”)公共类FooserviceImpl实施Fooservice {

}

您还可以使用@Autow的注释来告诉Spring如何注入bean依赖项:


package my.root.package.service;

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

    //...
}

正如@Wilson Freitas所说,使用自动释放。我每天都使用一个使用大部分自动化的系统,该系统拥有几千个春季托管豆。但是我认为“保留整体图片”的概念有些放错了位置。随着系统的增长,您不能指望以与在较小系统上相同的方式这样做。使用@Autowiring强制,您可以使用比基于XML的弹簧更强大的键入,这再次意味着您可以使用IDE的依赖关系跟踪功能在依赖项中导航。

我真的认为认为您 需要 在春季配置方面,要了解太多的“完整”图片。您应该专注于您的代码及其依赖性。通过很好地组织此代码,很好地命名事物并管理您的耦合,可以实现可管理性和可维护性;即使您不使用春季,所有适用的东西也适用。春季应该不会改变太大,并且经JSR-330的批准,似乎依赖注入似乎会进一步爬行,在运行时环境的罩子下。

我们的策略是:

  • 命名约定, ,例如:Fooservice,Foodao,Foocontroller;
  • 遵循这些惯例的物业设定者;
  • 用名称自动 (autowire =“ byname”);我们在按类型上进行自动释放有许多问题,尤其是在控制器层上
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top