亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring Properties的使用和配置方法

2024-07-13 10:15:58
字體:
來源:轉載
供稿:網友

對 Spring 里面的 Properties 不理解的開發者可能會覺得有點亂,主要是因為配置方式很多種,使用方式也很多種。

本文不是原理分析、源碼分析文章,只是希望可以幫助讀者更好地理解和使用 Spring Properties。

Properties 的使用

本文的讀者都是使用過 Spring 的,先來看看 Properties 是怎么使用的,Spring 中常用的有以下幾種使用方式:

1. 在 xml 配置文件中使用

即自動替換 ${} 里面的值。

<bean id="xxx" class="com.javadoop.Xxx">   <property name="url" value="${javadoop.jdbc.url}" /></bean>

2. 通過 @Value 注入使用

@Value("${javadoop.jdbc.url}")private String url;

3. 通過 Environment 獲取

此法有需要注意的地方。并不是所有的配置方式都支持通過 Environment 接口來獲取屬性值,親測只有使用注解 @PropertySource 的時候可以用,否則會得到 null ,至于怎么配置,下面馬上就會說。

@Autowiredprivate Environment env;public String getUrl() {  return env.getProperty("javadoop.jdbc.url");}

如果是 Spring Boot 的 application.properties 注冊的,那也是可以的。

Properties 配置

前面我們說了怎么使用我們配置的 Properties,那么該怎么配置呢?Spring 提供了很多種配置方式。

1. 通過 xml 配置

下面這個是最常用的配置方式了,很多項目都是這么寫的:

<context:property-placeholder location="classpath:sys.properties" />

2. 通過 @PropertySource 配置

前面的通過 xml 配置非常常用,但是如果你也有一種要 消滅所有 xml 配置文件 的沖動的話,你應該使用以下方式:

@PropertySource("classpath:sys.properties")@Configurationpublic class JavaDoopConfig {}

注意一點,@PropertySource 在這里必須搭配 @Configuration 來使用,具體不展開說了。

3. PropertyPlaceholderConfigurer

如果讀者見過這個,也不必覺得奇怪,在 Spring 3.1 之前,經常就是這么使用的:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  <property name="locations">    <list>      <value>classpath:sys.properties</value>    </list>  </property>  <property name="ignoreUnresolvablePlaceholders" value="true"/>   <!-- 這里可以配置一些屬性 --></bean>

當然,我們也可以用相應的 java configuration 的版本:

@Beanpublic PropertyPlaceholderConfigurer propertiess() {  PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();  Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")};  ppc.setLocations(resources);  ppc.setIgnoreUnresolvablePlaceholders(true);  return ppc;}

4. PropertySourcesPlaceholderConfigurer

到了 Spring 3.1 的時候,引入了 PropertySourcesPlaceholderConfigurer ,這是一個新的類,注意看和之前的 PropertyPlaceholderConfigurer 在名字上多了一個 Sources ,所屬的包也不一樣,它在 Spring-Context 包中。

在配置上倒是沒有什么區別:

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">  <property name="locations">    <list>      <value>classpath:sys.properties</value>    </list>  </property>  <property name="ignoreUnresolvablePlaceholders" value="true"/>  <!-- 這里可以配置一些屬性 --></bean>

也來一個 java configuration 版本吧:

@Beanpublic PropertySourcesPlaceholderConfigurer properties() {  PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();  Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")};  pspc.setLocations(resources);  pspc.setIgnoreUnresolvablePlaceholders(true);  return pspc;}

Spring Boot 相關

Spring Boot 真的是好東西,開箱即用的感覺實在是太好了。這里簡單介紹下相關的內容。

快速生成一個 Spring Boot 項目: https://start.spring.io/

application.properties

我們每個項目都默認有一個 application.properties 文件,這個配置文件不需要像前面說的那樣進行 注冊 ,Spring Boot 會幫我們 自動注冊 。

當然,也許你想換個名字也是可以的,在啟動的時候指定你的文件名字就可以了:

java -Dspring.config.location=classpath:sys.properties -jar app.jar

application-{env}.properties

為了給不同的環境指定不同的配置,我們會用到這個。

比如測試環境和生產環境的數據庫連接信息就不一樣。

所以,在 application.properties 的基礎上,我們還需要新建 application-dev.properties 和 application-prd.properties,用于配置環境相關的信息,然后啟動的時候指定環境。

java -Dspring.profiles.active=prd -jar app.jar

結果就是,application.properties 和 application-prd.properties 兩個文件中的配置都會注冊進去,如果有重復的 key,application-prd.properties 文件中的優先級較高。

@ConfigurationProperties

這個注解是 Spring Boot 中才有的。

即使大家不使用這個注解,大家也可能會在開源項目中看到這個,這里簡單介紹下。

來一個例子直觀一些。按照之前說的,在配置文件中填入下面的信息,你可以選擇寫入 application.properties 也可以用第一節介紹的方法。

javadoop.database.url=jdbc:mysql:javadoop.database.username=adminjavadoop.database.password=admin123456

java 文件:

@Configuration@ConfigurationProperties(prefix = "javadoop.database")public class DataBase {  String url;  String username;  String password;  // getters and setters}

這樣,就在 Spring 的容器中就自動注冊了一個類型為 DataBase 的 bean 了,而且屬性都已經 set 好了。

在啟動過程中動態修改屬性值

這個我覺得都不需要太多介紹,用 Spring Boot 的應該基本上都知道。

屬性配置有個覆蓋順序,也就是當出現相同的 key 的時候,以哪里的值為準。

啟動參數 > application-{env}.properties > application.properties

啟動參數動態設置屬性:

java -Djavadoop.database.password=admin4321 -jar app.jar

另外,還可以利用系統環境變量設置屬性,還可以指定隨機數等等,確實很靈活,不過沒什么用,就不介紹了。

總結

讀者如果想要更加深入地了解 Spring 的 Properties,需要去理解 Spring 的 Environment 接口相關的源碼。建議感興趣的讀者去翻翻源代碼看看

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品视频在线观看免费| 亚洲加勒比久久88色综合| 国产精品福利片| 国产精品88a∨| 国产精品揄拍500视频| 欧美精品一本久久男人的天堂| 成人a在线观看| 在线视频国产日韩| 欧美一区二区三区四区在线| 97国产精品久久| 国产欧美日韩亚洲精品| 欧美富婆性猛交| 亚洲精品资源美女情侣酒店| 欧美性猛交xxxx乱大交极品| 精品自在线视频| 97视频在线播放| 欧美精品激情在线观看| 中文字幕精品国产| 日韩美女视频免费看| 成人精品视频99在线观看免费| 国产精品jvid在线观看蜜臀| 91超碰中文字幕久久精品| 久久在线免费观看视频| 久久亚洲精品一区| 亚洲肉体裸体xxxx137| 欧美激情一级欧美精品| 亚洲美女精品久久| 色综合久久中文字幕综合网小说| 国内精品伊人久久| 国产精品成人一区二区| 美女福利视频一区| 97在线观看视频国产| 色噜噜亚洲精品中文字幕| 亚洲国产欧美一区二区三区同亚洲| 97精品视频在线| 欧美高跟鞋交xxxxxhd| 日韩免费av在线| 国产精品久久久久久久久久久不卡| 最好看的2019的中文字幕视频| www.久久久久| 一区二区三区四区视频| 久久久精品国产亚洲| 国产精品高潮呻吟视频| 亚洲电影免费在线观看| 国产成人精品视频在线| 久久久久九九九九| 动漫精品一区二区| 国产精品日韩电影| 精品久久久久久久久久久久| 亚洲丝袜在线视频| 欧美怡红院视频一区二区三区| 9.1国产丝袜在线观看| 国产精品扒开腿做爽爽爽视频| 成人免费福利视频| 国产亚洲免费的视频看| 国产亚洲欧洲高清| 精品久久久久久电影| 成人高h视频在线| 国产美女久久久| 国内精品久久久久伊人av| 91在线无精精品一区二区| 中文字幕不卡在线视频极品| 亚洲国内精品视频| 国产精品久久久久9999| 韩国v欧美v日本v亚洲| 美女久久久久久久久久久| 两个人的视频www国产精品| 欧美午夜视频在线观看| 亚洲天堂影视av| 欧美在线精品免播放器视频| 97久久久免费福利网址| 欧美精品免费在线观看| 欧美精品videossex性护士| 18一19gay欧美视频网站| 成人免费福利在线| 欧美大片免费观看| 国产精品一二三视频| 97人人模人人爽人人喊中文字| 国模精品一区二区三区色天香| 亚洲视频精品在线| 日本精品性网站在线观看| 欧美精品18videosex性欧美| 欧美裸体xxxx极品少妇软件| 日韩av在线导航| 51久久精品夜色国产麻豆| 92看片淫黄大片欧美看国产片| 国产日韩欧美综合| 亚洲国产欧美一区二区丝袜黑人| 2025国产精品视频| 国产精品久在线观看| 国产午夜精品免费一区二区三区| 国产精品电影网| 成人在线精品视频| 国产视频精品免费播放| 奇米影视亚洲狠狠色| 亚洲国产精品成人一区二区| 2019中文字幕在线观看| 亚洲欧美另类自拍| 日韩女优在线播放| 色中色综合影院手机版在线观看| 亚洲影视九九影院在线观看| 国产视频精品一区二区三区| 亚洲最大成人在线| 国产精品久久久久久av下载红粉| 欧美成人一区在线| 久久国产精品网站| 国产免费一区二区三区在线观看| 清纯唯美亚洲激情| 亚洲国产精品久久| 91精品视频播放| 这里精品视频免费| 91久久久久久国产精品| 亚洲人成毛片在线播放| 日韩免费在线电影| 亚洲美腿欧美激情另类| 欧美在线日韩在线| 在线观看日韩视频| 欧美亚洲日本网站| 色yeye香蕉凹凸一区二区av| 欧美福利在线观看| 91精品国产91久久久久久吃药| 中文日韩电影网站| 亚洲国产精品网站| 国产久一一精品| 欧美大学生性色视频| 久久九九有精品国产23| 欧美日韩性视频| 久久久久久久久久久久av| 国产亚洲精品久久久久久牛牛| 亚洲香蕉av在线一区二区三区| 久久精品99久久久久久久久| 欲色天天网综合久久| 久热精品视频在线| 国产亚洲欧美日韩精品| 91久久精品国产| 国产精品色婷婷视频| 亚洲精品久久7777777| 欧美剧在线观看| 不卡在线观看电视剧完整版| 97婷婷涩涩精品一区| 国产精品日韩在线播放| 亚洲人成在线免费观看| 国产精品欧美日韩久久| 久久久久五月天| 成人久久18免费网站图片| 欧美一区二区.| 九色精品免费永久在线| 欧美一级黑人aaaaaaa做受| 亚洲欧美综合图区| 日韩影视在线观看| 国产精品中文久久久久久久| 久久久免费高清电视剧观看| 久久影视电视剧免费网站清宫辞电视| 亚洲欧洲一区二区三区久久| 亚洲白拍色综合图区| 国a精品视频大全| 久久国产色av| 亚洲国产高潮在线观看| 欧美性受xxxx黑人猛交| 亚洲的天堂在线中文字幕| 国产亚洲欧美aaaa| 日韩av大片在线| 国产精品欧美激情| 国产亚洲精品91在线|