在eclipse中使用STS创建一个mvc项目我注意到servlet-context.xml似乎被编写为在root上下文和dispatcherservlet Context中使用。我这样说是因为我注意到上下文:组件扫描在其中,它通常被加载到根上下文中,但它被加载到dispatcherservlet上下文中。我还注意到了一个示例spring mvc / jpa项目 - http://duckranger.com/2012/04/spring-mvc-3-x-with-sts-tutorial-part-iii-add-some-jpa/ - 它专门将servlet-context.xml加载到两个上下文中。我认为这个想法是在上下文之间保持清晰的分离。有人可以向我解释一下吗?
答案 0 :(得分:6)
以下配置是完全错误的
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:META-INF\root-context.xml
classpath:META-INF\servlet-context.xml
classpath:META-INF\datasource.xml
</param-value>
</context-param>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:META-INF\servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<tx:annotation-driven>
它将会不会影响servlet上下文bean的行为,这将迫使你更加纠结配置。)<jpa:repositories>
放入servlet上下文是非常不合逻辑的,因为很可能您将使用服务层中的存储库。servlet上下文应仅包含用户端 API相关内容,但不包含应用程序。您是否应该划分根Web应用程序上下文的配置并将 data-side-api 放入单独的配置文件中是有争议的,但问题是关于servlet / root上下文。
这里不那么抽象,这是我在配置Spring应用程序时通常会记住的一些非正式的图表(在Spring上下文和bean配置文件方面)(当然它都是主观的,它不是一个超级解决方案,实际上是有点过于复杂 - 我不太可能需要这么多servlet和配置文件)