HDa*_*ave 9 configuration spring maven-2 servlets war
我看了一堆示例项目,似乎无法梳理一个常见的最佳实践.我见过Spring bean配置文件有时会进入src/main/webapp/WEB-INF目录.我已经在这样的Servlet定义中看到了web.xml这个:
<servlet>
<servlet-name>my-stuff</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/my-stuff-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
但我也看到bean配置文件包含在web.xml顶层 - 即在Servlet之外.这是什么意思?这是跨Servlet bean吗?有时它在src/main/webapp/WEB-INF目录中,有时它在src/main/resources.此外,我已经看到了WAR模块中定义的其他bean配置文件,其中包含几乎所有内容src/main/resources.
我已经阅读并重新阅读了Spring文档,但我发现的唯一约定是默认情况下Servlet上下文配置文件应该在src/main/webapp/WEB-INF名为的目录中{servlet-name}-servlet.xml.
那么最佳实践是什么?为什么?
axt*_*avt 12
Spring中的应用程序上下文可以形成层次结构,其中子上下文可以访问父上下文中定义的bean.
典型的Spring MVC Web应用程序包含两个级别的层次结构:
加载的根Web应用程序上下文ContextLoaderListener.applicationContext.xml默认情况下,此上下文的配置位置可以使用<context-param>named 配置contextConfigLocation,即在顶层web.xml.此上下文通常包含核心应用程序逻辑.
加载的Servlet特定上下文DispatcherServlet.它的配置位置是默认的<servletname>-servlet.xml,可以使用<init-param>named 配置contextConfigLocation,即在servlet级别配置.这个上下文通常包含一个与Spring MVC相关的东西(控制器等),因为它DispatcherServlet是Spring MVC的一部分.
后一种情况是前者的孩子.
如果Web应用程序不使用Spring MVC作为表示框架,则它没有DispatcherServlet及其上下文.一些非常简单的Spring MVC示例没有ContextLoaderListener和根上下文(但是,您需要root上下文来实现跨Servlet功能,例如Spring Security).
Web应用程序的配置文件默认位于webapp的根文件夹中.但是,它们可以放在类路径中(即in src/main/webapp),在这种情况下,它们可以通过classpath:前缀访问.如果要在没有servlet容器的集成测试中使用其中一些文件,这可能很有用.此外classpath:,当你想从一个单独的神器,从一个jar文件,即加载配置文件的前缀可能是有用的/WEB-INF/lib.
| 归档时间: |
|
| 查看次数: |
6392 次 |
| 最近记录: |