SpringフレームでSpringのXMLプロファイルをどのように読み取りますか?


今日はSpringフレームの中でSpringのXMLプロファイルをどのように読み取りますか?通常Springのプロファイルはappication Contact.xmlまたはspring-servlet.xmlでもカスタムXMLプロファイルかもしれません.私たちは通常、これらのファイルをプロジェクト名/WEB-INF/カタログの下に置いています.例えば、/Spring Test/WEB-INF/appration Contact.xml/SprigTest/WEB-INF/spring-servlet.xmlの最も一般的な方法は、Class PathXml Apple Contronit.comという種類を通して取得します.ネット上にはたくさんの例があります.私は主にパスの問題について話します.このルートについては、ネット上のバージョンのほとんどは直接こう書きます.
//spring-servlet.xml   SpringMVC     ,     /SpringTest/WEB-INF/spring-servlet.xml   
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-servlet.xml"); 
残念ながら、このようにして、私のテストから見れば、この配置ファイルが読めないので、間違いを報告します.根本的な原因はこのファイルが見つからないからです.
java.io.FileNotFoundException:class path resource[webTest.xml]cannot be opened because it does not exist
私はテストしました.Class PathXml Apple Contaction Contactextというクラスを通して、デフォルトではE:\myeclipse\myeclipse 10 Installfile\Spring\Webroot\WEB-INF\clases\という位置の配置ファイルをロードしますので、直接にApple Contration Xtxt=Continationを書きます.ロードできません.
私たちがMyEclipseで見たディレクトリは、ハードディスクのディレクトリ構造とは違っています.E:\myeclipse\myeclipse 10 InstallFile\Spring\Webroot\WEB-INF\clases\ディレクトリの下でコンパイルされたjavaファイルです.もしspring-servlet.xmlファイルをこのディレクトリの下にコピーすれば、このファイルを実行できます.
<span style="font-size:14px;">ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-servlet.xml"); </span>
しかし、これは明らかに私達が欲しい結果ではないです.どうすればいいですか?私はこの方法で作られたのです.Class PathXml Apple Compration ContectがデフォルトでロードしたのはEではありません.WEB-INFは私たちの配置ファイルのディレクトリです.コードは以下の通りです.
<span style="font-size:14px;">ApplicationContext applicationContext = new ClassPathXmlApplicationContext("../spring-servlet.xml");</span>
テストを経て、この方法は実行可能です.私たちの設定ファイルに読み込むことができます.そして、私たちはappication Contect.getBeanを通してidをdataSourceのbeanとして獲得できます.その結果は以下の通りです.comp.spring.dynamic_datasource.DynamicDataSource@1517e5e一つの説明が必要なのは、この方法はSpringフレームのプロファイルを読み込むので、web.xmlのプロファイルを読み込めません.web.xmlとSpringの構成ファイルは違います.これを比べてみます.spring-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>  
<!-- Bean   -->  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:util="http://www.springframework.org/schema/util"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">  
	 
	<!--          MySQL     2        -->
    <bean id="dataSource" class="com.spring.dynamic_datasource.DynamicDataSource">
        <property name="targetDataSources">
            <map key-type="java.lang.String">
                <entry value-ref="datasource_test" key="datasource_test"></entry>
                <entry value-ref="datasource_learn_system" key="datasource_learn_system"></entry>
            </map>
        </property>
        <property name="defaultTargetDataSource" ref="datasource_learn_system"></property>
	</bean>
   
</beans> 
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--    Spring MVC      DispatcherServlet   URL --> 
<servlet>
  <servlet-name>spring</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet>

<servlet-mapping>
  <servlet-name>spring</servlet-name> 
  <url-pattern>*.action</url-pattern> 
</servlet-mapping>

</web-app>
spring-servlet.xmlの根の元素はです.
web.xmlのルート要素はです.
もちろん、最も根本的な違いは名前空間、つまりこの部分から来ています.
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:util="http://www.springframework.org/schema/util"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd  
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> 
これはSpringのプロファイルの仕様です.XXXX.xmlのXmlファイルの仕様をこのように定義すれば、Spring容器は自動的に識別できます.このファイルをSpringプロファイル特有の標識として表示します.
はい、今日はここまでにします.