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という種類を通して取得します.ネット上にはたくさんの例があります.私は主にパスの問題について話します.このルートについては、ネット上のバージョンのほとんどは直接こう書きます.
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ファイルをこのディレクトリの下にコピーすれば、このファイルを実行できます. です.
web.xmlのルート要素は です.
もちろん、最も根本的な違いは名前空間、つまりこの部分から来ています.
はい、今日はここまでにします.
//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プロファイル特有の標識として表示します.はい、今日はここまでにします.