Home  >  Article  >  Backend Development  >  Detailed introduction to Spring's code examples for using multiple xml configuration files

Detailed introduction to Spring's code examples for using multiple xml configuration files

黄舟
黄舟Original
2017-03-08 16:53:512528browse

Spring uses multiple xml configuration files, friends in need can refer to them.

1, Define the contextConfigLocation parameter in web.xml. Spring will use this parameter to load all comma-delimited xml. Without this parameter, spring loads the web-inf/applicationContext.xml file by default.

<context-param><param-name>contextConfigLocation</param-name>
<param-value>classpath*:conf/spring/applicationContext_core*.xml,
classpath*:conf/spring/applicationContext_dict*.xml,classpath*:conf/spring/applicationContext_hibernate.xml,
classpath*:conf/spring/applicationContext_staff*.xml,classpath*:conf/spring/applicationContext_security.xml
classpath*:conf/spring/applicationContext_modules*.xmlclasspath*:conf/spring/applicationContext_cti*.xml
classpath*:conf/spring/applicationContext_apm*.xml</param-value>
</context-param>

The contextConfigLocation parameter defines the Spring configuration file to be loaded. The principle is explained as follows:

1. Use ServletContextListener to implement.
Spring provides an implementation class of ServletContextListener, ContextLoaderListener, which can be used

as a listener. It will automatically find the applicationContext.xrnl file under WEB-INF/ when it is created. Therefore, if there is only one configuration file and the file name is applicationContext.xml, you only need to add the following code to the web.xml

file:


<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

If there are multiple configuration files that need to be loaded, consider using the file name of the configuration file. Because when ContextLoaderListener loads, it will look for a parameter named contextConfigLocation.

Therefore, the parameter name should be contextConfigLocation when configuring context-param.

The web.xml file with multiple configuration files is as follows:

<1-- XML 文件的文件头二〉<?xml version="l.O" encoding="工80-8859-1"?>
< 1-- web.xm1 文件的DTD 等信息一〉<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems. 工口c.//DTD Web Application 2.3//EN"&#39;&#39;http://java.sun.com/dtd/web-app_2_3.dtd&#39;&#39;>
<web-app><!一确定多个配置文件>
<context-param><1-- 参数名为contextConfigLocation…〉
<param-name>contextConfigLocation</param-name><!一多个配置文件之间以,隔开二〉
<param-value>/WEB-工NF/daoContext.xml./WEB-INF/applicationContext.xml</param-value>
</context-param><!-- 采用listener创建Applicat工onContext 实例-->
<listener><listener-class>org.spr工ngframework.web.context.ContextLoader
Listener</listener-class></listener></web-app>

If there is no contextConfigLocation specified configuration file, Spring will automatically find the application

Context.xrnl configuration file. If there is contextConfigLocation, use the configuration file determined by this parameter.

This parameter specifies a string. Spring's ContextLoaderListener is responsible for decomposing the string into multiple

configuration files. Commas ",", spaces "" and semicolons ";" can all be used as characters string delimiter.

If there is neither an applicationContext. All will cause Spring to be unable to


Load the configuration file or fail to create the ApplicationContext instance normally

Configuring a servlet set by spring for loading can achieve the same effect.


Use load-on-startup Servlet accomplish.

Spring provides a special Servllet class: ContextLoaderServlet. When the Servlet is started, it will


automatically search for the applicationContext.xml file under WEB-IN.

Of course, in order to allow the ContextLoaderServlet to start when the application starts, this Servlet should be configured as


Load-on-startup The value of Servleto load-on-startup is smaller, which is more appropriate, because it is necessary to ensure that Application

Context is created first. If there is only one configuration file and the file name is applicationContext.xml, then add the following code to the


web.xml file:

<servlet>
<servlet-name>context</servlet-name><servlet-class>org.springframework.web.context.ContextLoaderServlet</
servlet-class><load-on-startup>l</load-on-startup>
</servlet>

. The web and nl files with multiple configuration files are as follows:

<!-- XML 文件的文件头--><?xml version="1.0" encoding="工SO-8859-1"?>
<! -- web.xml 文件的DTD 等信息→<!DOCTYPE web-appPUBLIC "-//Sun Microsystems , 工口c.//DTD Web Application 2.3//EN"
&#39;&#39;http://java.sun.com/dtd/web-app_2_3.dtd&#39;&#39;><web-app>
<&#39;一确定多个配置文件一><context-param>
<!-- 参数名为contextConfigLocation--><param-name>contextConfigLocation</param-name><!-- 多个配置文件之间以,隔开一〉
<param-value>/WEB-工NF/daoContext.xml, !WEB-工NF/applicationContext.xml</param-value>
</context-param><!一采用load-on-startup Servlet 创建Applicat工onContext 实例一〉
<servlet><servlet-narne>context</servlet-narne>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<!一下面值小一点比较合适,会优先加载一〉<load-on-startup>l</load-on-startup></servlet>
</web-app>

2, use the matching character

<context-param><param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value></context-param>

. For example, if Hibernate is used, put the hibernate related configuration in applicationContext- hibernate.xml is a file, and some global related information is placed in applicationContext.xml. Other configurations are similar. In this way, it can be loaded without writing separated by spaces or commas!

3, if you use struts to load multiple spring configuration files. The following configuration is actually the contextConfigLocation variable.

struts-config.xml add this

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml,,,,,,,"/>

4, if it is non-j2ee Apply direct program loading.

ApplicationContext act = new ClassPathXmlApplicationContext(new
String[]{"bean1.xml","bean2.xml"});BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));
reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));
BeanFactory bf = (BeanFactory)reg;

Finally, explain the difference between the following classpath*: and classpath:

classpath*: appears to load the same file from multiple jar files.classpath: Only the first file found can be loaded.

The above is the detailed content of Detailed introduction to Spring's code examples for using multiple xml configuration files. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn