起初我不得不说我对 Spring 的背景比 grails 更多,当你没有卡片时,后来的约定优于配置有点令人不安。
考虑一个 grails 项目。
如果我有一个不是真正的服务,而是另一个对象的一部分的“组件”(将在 spring 上下文中的 POJO 的 Spring 术语),我应该把它放在哪里?在 src/groovy 或 grails/services 中?看起来第二个选项为我编写测试提供了更多权力,因为 Grails 将服务视为:
Grails 中的服务是将大部分逻辑放入应用程序的地方
我觉得 grails/services 目录是所有 Springified bean 的一种包......
下一个问题,如果我需要在 Spring 上下文中为该服务提供一些伴生 bean,我如何对我的组件/服务进行单元测试。这个伙伴不是服务,而是其他在运行时必需的组件,但我可以使用默认实现。
使用 spring 我可以简单地使用这种注释为我的测试创建一个小的上下文:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/simple-job-launcher-context.xml",
"/jobs/skipSampleJob.xml" })
如何对 Grails 做同样的事情?我想知道是否有一种首选的方法来创建一个可以重用和组合的小型 Spring 上下文,用于测试,就像我可以使用@ContextConfiguration注释一样。
由于 grails 的所有隐藏约定,我害怕不使用正确的方式(如果存在的话),但是对它们的清晰解释促使我直接使用 Spring。