如何验证Spring的applicationContext.xml文件

4

我在applicationContext.xml文件中定义了几个bean,发现如果我对bean的名称犯了错误(比如打错字),Spring不会抱怨任何东西,而是继续加载无效的配置。Spring难道不会自动检查吗?我该如何在applicationContext.xml文件上实现模式验证呢?谢谢。


如果文件无效,Spring 将不会加载它。如果它被加载了,那么它就是有效的。它执行自己的架构级别和逻辑级别验证。您需要给我们一个具体的例子,说明您认为出了什么问题。 - skaffman
在以下代码中,我实际上打错了类名,应该是'com.xyz.services.serviceAttributesConfigInitializer',但Spring不会抱怨任何异常也不会启动服务。 <bean class="com.xyz.services.service.AttributesInitializer"> <constructor-arg value="${attributes_sources}" /> <constructor-arg ref="operationalConfig" /> </bean> - ohana
这不是真的。它 抱怨,而且会抱怨很多。你一定没有看正确的日志文件。 - skaffman
我希望能够在Junit测试中进行验证。并非团队中的每个人都使用IDEA,通过让Spring加载XML文件来测试非常耗时 - 2或3分钟很常见。 - Christopher Helck
3个回答

6

IntelliJ IDEA对Spring有出色的支持,包括:

  • 检测损坏的引用(bean不存在、类型错误等)
  • 在按下Ctrl+Space时完成bean名称(同时将列表缩小为仅匹配类型的bean)
  • 当使用@Resource/@Autowired并且在运行时无法自动装配时,发现缺失/重复的bean
  • Java和应用程序上下文XML之间的快速导航
  • ...以及更多

我还强烈建议编写Spring smoke 集成测试。它不需要测试任何内容,只需启动上下文(您会惊讶地发现它发现了多少错误)。


我怎样可以使用集成测试来测试上下文启动?你有任何例子或链接吗?谢谢。 - ohana
1
请阅读我提供的链接。里面解释了一切。即使没有实际测试,拥有一个测试可以运行大部分应用程序上下文XML文件将具有很大的价值。 - Tomasz Nurkiewicz

1

除了这个问题,我还遇到了一些检测重复bean id的问题,这些问题会在不经意间被覆盖,但最终我找到了这个开源项目,它可以帮助你编写JUnit单元测试来检测这些问题。它非常容易使用并解决了我的问题,它叫做Beanoh


1
为了避免Spring上下文中的错误,我建议您使用一个插件来检查其内容,例如springIDESpringSource Tool Suite。这样,插件可以在开发过程中验证您的Spring上下文,并且您可以在应用程序执行之前找到错误。

我希望编写代码手动检查bean,而不是让Spring自动完成,这样我就可以掌握控制权…这可行吗? - ohana
我不知道,我从来没有做过那个。我喜欢在开发过程中进行验证,这样在执行时就不会出现任何问题。关键是Spring试图解析上下文,如果有任何错误,它就无法完成并抛出相关的异常...但是,我很好奇,你想要做什么?能否请您举个例子? - javanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接