2009-08-26 68 views
9

我决定了我的Spring应用程序上下文文件的命名约定。我遇到了这个blog和几个教程,建议applicationContext-<name>.xml是要走的路。我通常不会发现混合骆驼案件与破折号/下划线。你见过的其他命名约定是什么?Spring应用程序上下文XML的命名约定

编辑:我也想在与它们有关的包内嵌套上下文文件。例如,我的类/接口涉及到排序将在上下文文件com/mycompany/order/spring-context.xml。我会有一个顶级的applicationContext.xml,它将所有东西放在一起。建议?

+6

请注意制作非常精细的应用程序上下文文件(即每个软件包)。将bean定义分布在许多不同的文件中可能会成为维护问题;很难看到“大画面”。而且有时候你想要用于测试的相同豆类的替代线路和什么。我认为每个主要子系统或应用程序层的一个文件更有意义。当需要出现时,你总是可以将它们分开。 – 2009-08-26 17:13:57

回答

8

如果有一个约定,我想它是:存储在包(不是默认包),以避免潜在的命名冲突

  1. 文件,也意味着我不必包括应用程序名称,它是由包定义的。 “ - ”命名有全部小写
  2. 文件名

我倾向于前加上“春天里”我的Spring配置文件分开使得它更加明显,他们使用的东西,但这个不一定强制性的。

但让我说这将适用于我处理我的spring文件的方式,可能不适用于所有情况。

恕我直言applicationContext- <名>的.xml有点冗长(长),我喜欢所有小写,因为它是从我的Java源代码区分他们,(我认为)让他们更容易阅读。

4

对于Web MVC项目,我倾向于打破各种背景文件一起责任界限:

  • appname-dao.xml
  • appname-servlet.xml
  • appname-services.xml
  • appname-security.xml
1

无论是骆驼案件或' - '分开将工作e,只要你一致。我知道在我们的例子中,虽然我们没有将上下文文件放在与代码相同的目录中,除非代码本身是Spring知道的,在我们的例子中它不是。

我们有两种情况,在我们使用maven 2的情况下,上下文文件位于resource/spring目录中,其中资源是java源目录的兄弟。在使用Maven 1的情况下,我们只需创建一个根弹簧包,并将环境放在那里。这两种情况都假定'正规'的java代码。在Wars,EJB和OSGi包的情况下,这些文件通常驻留在meta-inf目录中。

此外,我们不使用顶级应用程序上下文将所有内容“拉”在一起。我们只是用多个上下文文件创建一个上下文。我们发现用不同的方式进行测试要简单得多,使用模拟对象的单元测试,没有服务器的集成测试和部署到服务器的完整集成测试。在所有这些场景中,只需重新配置如何创建上下文,而不是为每个场景创建“主”上下文。

2

我非常支持applicationContext-<name>.xml公约。

一般来说<name>指的是我们所有项目中的Maven模块名称。因此,每个需要Spring配置的模块都有自己的applicationContext-<name>.xml文件。 “执行模块”即代表进入应用程序入口点种类的一个模块(WAR,EAR等)具有一个applicationContext.xml,它只导入所有的applicationContext-<name>.xml文件。

我们在所有的Maven/Spring项目中严格使用这个公约范围的公约,它被证明是非常简单,清晰和高效的。