>  기사  >  백엔드 개발  >  여러 XML 구성 파일을 사용하기 위한 Spring의 코드 예제에 대한 자세한 소개

여러 XML 구성 파일을 사용하기 위한 Spring의 코드 예제에 대한 자세한 소개

黄舟
黄舟원래의
2017-03-08 16:53:512528검색

Spring은 여러 개의 xml 구성 파일을 사용하므로 도움이 필요한 친구들이 참조할 수 있습니다.

1, web.xml에 contextConfigLocation 매개변수를 정의합니다. Spring은 이 매개변수를 사용하여 쉼표로 구분된 모든 xml을 로드합니다. 이 매개변수가 없으면 spring은 기본적으로 web-inf/applicationContext.xml 파일을 로드합니다. .

<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>

contextConfigLocation 매개변수는 로드할 Spring 구성 파일을 정의합니다. 원리는 다음과 같습니다.

1. ServletContextListener를 사용하여 구현합니다.
Spring은 리스너로 사용할 수 있는 ServletContextListener, ContextLoaderListener의 구현 클래스를 제공합니다. 이는 생성될 때 WEB-INF/에서 applicationContext.xrnl 파일을 자동으로 찾습니다. 따라서

구성 파일이 하나만 있고 파일 이름이 applicationContext.xml인 경우 web.xml


파일에 다음 코드만 추가하면 됩니다.

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

로드해야 하는 구성 파일이 여러 개 있는 경우 파일 이름을 결정하는 것이 좋습니다. ContextLoaderListener가 로드되면 contextConfigLocation이라는 매개변수를 찾기 때문입니다.


따라서 context-param 구성 시 매개변수 이름은 contextConfigLocation이어야 합니다.

여러 구성 파일이 포함된 web.xml 파일은 다음과 같습니다.

<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>

contextConfigLocation이 지정된 구성 파일이 없으면 Spring은 자동으로 애플리케이션

Context.xrnl 구성 파일을 찾습니다. contextConfigLocation이 있는 경우 이 매개변수로 결정된 구성 파일을 사용합니다.


이 매개변수로 지정된 문자열. Spring의 ContextLoaderListener는 문자열을 여러

구성 파일로 분해하는 역할을 합니다. 쉼표 ",", 공백 "" 및 세미콜론 ";"은 모두 문자열 구분 기호로 사용될 수 있습니다. .


applicationContext. 모두 인해 Spring이

구성 파일을 로드할 수 없거나 ApplicationContext 인스턴스를 정상적으로 생성할 수 없게 됩니다.
Spring에서 로드용으로 설정된 서블릿을 구성하면

동일한 효과를 얻을 수 있습니다. 시작 시 로드 서블릿이 수행됩니다.
Spring은 특별한 Servlet 클래스인 ContextLoaderServlet을 제공합니다. 서블릿이 시작되면

WEB-IN에서 applicationContext.xml 파일을 자동으로 검색합니다.
물론 애플리케이션이 시작될 때 ContextLoaderServlet이 시작되도록 하려면 이 서블릿을

load-on-startup의 Servleto load-on-startup 값이 더 작도록 구성해야 합니다. Application
컨텍스트가 먼저 생성되었는지 확인해야 하기 때문에 이 방법이 더 적합합니다. 구성 파일이 하나만 있고 파일 이름이 applicationContext.xml인 경우

web.xml 파일에

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

코드를 추가합니다. 여러 구성 파일이 포함된 web 및 nl 파일은 다음과 같습니다.

<!-- 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, 일치하는 문자

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

를 사용합니다. 예를 들어 Hibernate를 사용하는 경우 hibernate 관련 구성을 입력합니다. applicationContext에 - hibernate.xml이 파일이고,

일부 전역 관련 정보가 applicationContext.xml에 배치되며, 다른 구성도 유사하므로 공백이나 쉼표로 구분하여 쓰지 않고 로드할 수 있다. !

3, struts를 사용하여 여러 spring 구성 파일을 로드하는 경우 다음 구성은 실제로 contextConfigLocation 변수입니다.

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

4를

struts-config에 추가하세요. xml, j2ee가 아닌 경우 직접 프로그램 로드를 적용합니다.

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;

마지막으로 다음 classpath*:와 classpath:

classpath*:에서 동일한 파일을 로드하는 것으로 나타납니다. multiple jar files.classpath: 발견된 첫 번째 파일만 로드할 수 있습니다.

위 내용은 여러 XML 구성 파일을 사용하기 위한 Spring의 코드 예제에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.