Spring应用程序上下文XML的命名约定

时间:2009-08-26 12:44:59

标签: java spring

我正在决定Spring应用程序上下文文件的命名约定。我遇到了这个blog,并且有几个教程建议applicationContext-<name>.xml是要走的路。我通常不会发现混合带有破折号/下划线的驼峰情况。您看到了哪些其他命名约定?

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

4 个答案:

答案 0 :(得分:8)

如果有约定,我希望它是:

  1. 存储在包中的文件(不在默认包中)以避免潜在的命名冲突,也意味着我不必在其中包含应用程序名称,它由包定义。
  2. 文件名为全小写,带有' - '以分隔名称
  3. 我倾向于在弹簧配置文件前加上“spring”,这使得它们的用途更加明显,但这不一定是强制性的。

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

    IMHO applicationContext-&lt; name&gt; .xml有点冗长(长),我喜欢全部小写,因为它区别于我的java源码(我认为)使它们更容易阅读。

答案 1 :(得分:4)

对于Web MVC项目,我倾向于按照职责分解各种上下文文件:

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

答案 2 :(得分:2)

我非常支持applicationContext-<name>.xml惯例。

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

我们在所有Maven / Spring项目中严格使用此公约,并且它被证明非常简单,清晰和高效。

答案 3 :(得分:1)

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

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

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

相关问题