2011-03-31 71 views
2

我在applicationContext.xml文件中定义了几个bean,并发现如果我用bean的名称犯了错误(说错字),spring将不会抱怨任何内容,并继续加载invalidate组态。不自动进行检查?以及如何在applicationContext.xml文件上实现模式验证?谢谢。如何验证spring applicationContext.xml文件

+0

如果该文件无效,Spring将不会加载它。如果它加载它,它是有效的。它做了自己的模式级和逻辑级验证。你需要给我们一个你认为它做错了什么的具体例子。 – skaffman 2011-03-31 16:29:21

+0

在下面的代码中,我实际上错误输入了类名,应该是'com.xyz.services.serviceAttributesConfigInitializer',但是Spring不会'抱怨什么异常不会启动服务。 <构造精氨酸值= “$ {attributes_sources}”/> <构造精氨酸REF = “operationalConfig”/> – ohana 2011-03-31 17:18:48

+0

这是不正确。它会*抱怨,而且会抱怨很多。你一定不要看正确的日志文件。 – skaffman 2011-03-31 17:32:01

回答

6

的IntelliJ IDEA有一个美好的support春季,包括:

  • 检测断开的引用(Bean不存在,有一个错误类型等)
  • 完成bean的名字时按Ctrl +按下空格键(同时将列表缩小到只有按类型匹配的豆)
  • 当使用@Resource/@Autowired时发现丢失/重复的豆,它将失败在运行时自动装配Java和应用程序上下文XML
  • 之间很多
  • 快速导航...更多

此外,我强烈建议写春烟integration test。它不需要测试任何东西,只需要上下文启动(你会惊讶的发现它发现了多少错误)。

+0

我如何使用迭代测试测试上下文启动?你有任何例子或链接?谢谢。 – ohana 2011-03-31 17:58:13

+1

请阅读我提供的[链接](http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/testing.html)。一切都在那里解释。即使在没有实施实际测试的情况下,进行一次测试来执行大部分应用程序上下文XML文件也将具有很大的价值。 – 2011-03-31 18:41:45

1

为了避免在春天出现错误,我建议你使用一个插件来检查它的内容,例如springIDESpringSource Tool Suite。通过这种方式,插件可以在开发过程中验证您的spring上下文,并且可以在执行应用程序之前发现错误。

+0

我希望编写代码来手动检查bean,而不是让Spring自动执行它,这样我就可以控制控件了......可能吗? – ohana 2011-03-31 17:17:21

+0

我不知道,我从来没有这样做过。我喜欢在开发过程中进行验证,所以在执行期间我没有任何问题。重点在于Spring试图解析上下文,如果有任何错误,它就无法做到这一点,所以它会抛出相关的异常......但是,我很好奇,你想要做什么?你能举个例子吗? – javanna 2011-03-31 17:33:17

1

除了这个问题,我还遇到了检测重复的bean id的问题,这些重复的bean会无意中被重写,但最后我发现这个开源项目可以帮助你编写JUnit单元测试来检测这些问题。这是非常容易使用和解决我的问题,它叫Beanoh