springmvc项目中配置文件慢慢会变得很大,如何拆分并合理的组织?
看到有些项目是这么做的:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml,classpath:spring-mybatis.xml</param-value>
</context-param>
<servlet>
<description>spring mvc servlet</description>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
的配置文件和classpath:spring-mvc.xml的各自作用是什么?
classpath:spring-mvc.xml:表示spring-mvc.xml文件在classes文件夹下
其他那些文件都是基本的springmvc配置以及spring加载。
这些稍微找篇spring和springmvc的基础配置就都有说明。
文件
自己来回答一下自己的问题吧,spring的ApplicationContext是一个上下文概念,mvc项目其实每一个Servlet都有一个对应的WebApplicationContext.其对应的上下文配置beas的文件是[servlet-name]-servlet.xml,当然可以设置路径。但是这里每个servlet的配置文件是相互隔离的,也就是说某个servlet的配置文件中的beans在另一个servlet是不可用的。
解决这个问题就是将通用共享的beans放到root applicationContext中,web的application context会自动继承root applicationContext的beans。
例如我们可以将数据库 ,mybatis,spring-security等配置文件分别写进一个xml文件,然后在web启动时就加载进来,如下所示:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-base.xml
classpath:spring-mybatis.xml
classpath:spring-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>