日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring核心配置文件引入外部properties文件和另外的xml配置文件

發布時間:2024/4/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring核心配置文件引入外部properties文件和另外的xml配置文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring核心配置文件引入外部properties文件和另外的xml配置文件

為什么要引入外部文件

我們使用jdbc的時候,會創建一個jdbc.properties配置文件,如果我需要在spring的IOC中存入連接池對象呢?
是不是需要給鏈接對象的屬性url username password driver ,我們應該如何在spring的配置文件中引入外部文件呢?

引入properties文件

? Spring提供了讀取外部properties文件的機制,使用讀取到的數據為bean的屬性賦值
? 操作步驟

  • 準備外部properties文件
  • 開啟context命名空間支持
    xmlns:context=“http://www.springframework.org/schema/context”
  • 加載指定的properties文件
    < context:property-placeholder location=“classpath:filename.properties”>
  • 使用加載的數據
    < property name=“propertyName” value="propertiesName"/>?注意:如果需要加載所有的properties文件,可以使用?.properties表示加載所有的properties文件?注意:讀取數據使用{propertiesName}"/> ? 注意:如果需要加載所有的properties文件,可以使用*.properties表示加載所有的properties文件 ? 注意:讀取數據使用propertiesName"/>?properties使?.propertiesproperties?使{propertiesName}格式進行,其中propertiesName指properties文件中的屬性名
  • 代碼演示

    實體類準備

    我使用一個User類,有兩個屬性,我這個兩個屬性的值,從properties配置文件中讀取值,通過IOC 的DI依耐注入值

    package com.fs.demo;public class User {private String username;private String password;// set方法讓spring可以DI依耐注入屬性public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +'}';} }

    properties配置文件

    username=xiaofu
    password=1234
    **注意:**配置文件中username前面要加個前綴,不然賦值的時候會把你當前計算機的用戶名取出來,而不是從properties中讀取的,原因是因為計算機的環境變量中有個值也是username,而spring啟動的時候會讀取環境變量中的值,從而導致和properties中的值沖突

    user.username=xiaofu user.password=1234

    applicationContext.xml核心配置文件

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 加載context命名空間 xmlns:context="http://www.springframework.org/schema/context" http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd --><!-- 引入外部properties文件properties中的key不要和本機的環境變量中的值沖突,因為spring在加載的時候獲取計算機的環境變量中的值若與環境中的值沖突,讀取出來的值就是計算機環境變量中設置的值所以,我們配置jdbc的時候一般就是jdbc.username.不會直接username注意:若要導入多個properties,需要在主配置文件中配置,classpath:*.properties<context:property-placeholder location="classpath:*.properties"/>--><context:property-placeholder location="classpath:data.properties"/><!-- 把user交給ioc管理--><bean id="user" class="com.fs.demo.User"><!-- ${properties中的key名} --><property name="username" value="${user.username}"/><property name="password" value="${user.password}"/></bean> </beans>

    測試代碼

    @Testpublic void testProperties(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");User user = (User) applicationContext.getBean("user");System.out.println(user);/*properties配置信息username=xiaofupassword=1234User{username='93422', password='1234'}若輸出結果不為properties中配置的值,這個值是我的電腦用戶名,因為spring在啟動的時候會讀取計算機的環境變量,環境變量中會有這個username所以拿到的值是你環境變量中配置的值,而不是你properties中設置的值所以,我們在寫properties的key的時候,一般會jdbc.username,以免和系統的環境變量中的username沖突,導致取出的值不是properties中的值*//*properties配置信息是這樣的就會正常讀取到值user.username=xiaofuuser.password=1234//打印輸出User{username='xiaofu', password='1234'}*/}

    控制臺運行結果

    spring核心配置文件中導入其他的.xml配置文件

    團隊開發
    ? 名稱:import
    ? 類型:標簽
    ? 歸屬:beans標簽
    ? 作用:在當前配置文件中導入其他配置文件中的項
    ? 格式:
    < beans>
    < import />
    < /beans>
    ? 基本屬性:
    < import resource=“config.xml"/>
    ◆ resource:加載的配置文件名

    ? Spring容器加載多個配置文件
    new ClassPathXmlApplicationContext(“config1.xml”,“config2.xml”);
    ? Spring容器中的bean定義沖突問題
    ◆ 同id的bean,后定義的覆蓋先定義的
    ◆ 導入配置文件可以理解為將導入的配置文件復制粘貼到對應位置
    ◆ 導入配置文件的順序與位置不同可能會導致最終程序運行結果不同

    代碼演示

    實體類

    創建一個類,這個類有個實體類屬性,一個set方法,用于DI依耐注入

    package com.fs.demo;public class Demo {private TestDemo testDemo;public void setTestDemo(TestDemo testDemo) {this.testDemo = testDemo;}@Overridepublic String toString() {return "Demo{" +"testDemo=" + testDemo +'}';} }

    創建一個類,這個類是上一個類的屬性

    package com.fs.demo;public class TestDemo {public void testDemo(){System.out.println("TestDemo測試語句輸出");} }

    applicationContext.xml配置文件

    applicationContext.xml主配置文件

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!-- 引入外部的spring的配置文件--><import resource="classpath:applicationContext02.xml"/><bean id="demo" class="com.fs.demo.Demo"> <!-- 這里就體現了引入外部的applicationContext02.xml文件,因為ref="testDemo這就是在applicationContext02配置的--><property name="testDemo" ref="testDemo"/></bean> </beans>

    applicationContext02.xml其他的.xml配置文件,在主配置文件中被引入了的

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 把test交給springIOC管理--><bean id="testDemo" class="com.fs.demo.TestDemo"/></beans>

    測試代碼

    //測試引入其他的配置文件@Testpublic void testDemo(){ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//在主配置文件中獲取出daoDemo demo = (Demo) applicationContext.getBean("demo");//Demo{testDemo=com.fs.demo.TestDemo@544a2ea6}因為在applicationContext02.xml中吧testDemo交給IOC管理了,所以demo中的set注入成功System.out.println(demo);}

    控制臺運行效果

    總結

    以上是生活随笔為你收集整理的spring核心配置文件引入外部properties文件和另外的xml配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。