SpringBoot入門系列片(九):使用自定義的屬性並配置成類
前情提要
在SpringBoot中使用application.properties默認了很多配置,有時候我們也需要到該屬性配置檔案中自定義屬性值,甚至於將一系列自定義屬性合併成一個物件,而SpringBoot中也提供了這種功能的實現,那麼現在就來試試吧
使用自定義的屬性並配置成類
首先在applicatiion.properties屬性檔案中自定義一系列屬性:
//application.properties配置檔案
person.id=1
person.name=chengxi
person.nick=成兮
person.pass=970624
然後建立一個entity實體類,這裡就建立一個person類吧,並使用註解ConfigurationProperties修飾,表示該類通過屬性檔案進行配置,程式碼如下:
package org.framework.demo.section1;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "person")
public class Person {
private Integer id;
private String name;
private String nick;
private String pass;
public Integer getId () {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNick() {
return nick;
}
public void setNick (String nick) {
this.nick = nick;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
這樣一來,Person類的屬性值在執行時就已經確定值了。如果想要配置的屬性值不是application.properties,而是我們自定義的屬性檔案中,直接將ConfigurationProperties註解中的location的值設定成該屬性檔案的位置即可。例如我設定application.properties同級下的person.properties檔案:
//classpath: person.properties
person.id=1
person.name=chengxi
person.nick=成兮
person.pass=970624
然後在對應的Person類中的註解裡面額外設定一個屬性locations的值:
package org.framework.demo.section1;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "person", locations="classpath:person.properties")
public class Person {
private Integer id;
private String name;
private String nick;
private String pass;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
而SpringBoot1.5版本以後取消了ConfigurationProperties註解的location屬性的設定,所以如果我們想要自定義屬性檔案的位置,需要結合Component註解和PropertySource註解的幫助,程式碼如下:
package org.framework.demo.section1;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* SpringBoot1.5後的自定義屬性檔案的配置測試類
**/
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath: person.properties")
public class Person {
private Integer id;
private String name;
private String nick;
private String pass;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
最後,我們需要在啟動類中新增Person.class的配置,通過EnableConfigurationProperties註解進行配置,程式碼如下:
package org.framework.demo.section1;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.ComponentScan;
/**
* 在SpringBoot中簡單使用Servlet
* 通過註解註冊Servlet
* @author chengxi
*/
@SpringBootApplication
//用於配置檔案自定義屬性成類
@EnableConfigurationProperties(Person.class)
public class ServletApp2 {
public static void main(String[] args){
//關閉banner的輸出
SpringApplication app = new SpringApplication(ServletApp2.class);
// app.setBannerMode(Banner.Mode.OFF);
app.run(args);
}
}
這樣一來,即可實現與普通的entity實體類一樣的功能了,在後面想要使用Person類的例項直接Autowired自動注入即可,如下:
@Autowired
private Person person;
相關推薦
SpringBoot入門系列片(九):使用自定義的屬性並配置成類
前情提要 在SpringBoot中使用application.properties默認了很多配置,有時候我們也需要到該屬性配置檔案中自定義屬性值,甚至於將一系列自定義屬性合併成一個物件,而SpringBoot中也提供了這種功能的實現,那麼現在就來試試吧
SpringBoot應用篇(一):自定義starter
一、碼前必備知識 1、SpringBoot starter機制 SpringBoot中的starter是一種非常重要的機制,能夠拋棄以前繁雜的配置,將其統一整合進starter,應用者只需要在maven中引入starter依賴,SpringBoot就能自動掃描到要載入的資訊並啟動相應的預設配置。sta
微服務 SpringBoot 2.0(九):整合Mybatis
我是SQL小白,我選Mybatis —— Java面試必修 引言 在第五章我們已經整合了Thymeleaf頁面框架,第七章也整合了JdbcTemplate,那今天我們再結合資料庫整合Mybatis框架 在接下來的文章中,我會用一個開源的部落格原始碼來做講解
Linux小小白入門教程(九):查詢檔案或者文字內容
以下操作在Linux終端進行。Linux因為許可權非常嚴格,所以暫時所有的命令操作全部是在/home資料夾下的/yangjw資料夾下進行。/yangjw資料夾就是登入使用者名稱所在的資料夾,出了此資料
Ansible入門篇(九):ElasticSearch自動化安裝
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎。 ElasticSearch安裝包下載 到ElasticSearch官網 對應版本的安裝包,本文以ElasticSearch 6.5.4為例。 將下載好
Spring Data REST入門(四):自定義查詢(上)
一、自定義查詢方法 通常會有這樣的需求,根據給定的欄位查詢相應表中的資料物件。比如在前幾篇部落格中定義的User實體來,需要一個按照name值查到與之對應的資料物件返回,只需要在UserRopository中定義如下程式碼: /**
Spring Security 入門(四):自定義-Filter
前文導讀本文解決問題將自定義的 Filter 加入到 Spring Security 中的 Fi
Sping Boot入門到實戰之入門篇(三):Spring Boot屬性配置
git 測試 add 禁用 rop fix ron org set 該篇為Sping Boot入門到實戰系列入門篇的第三篇。介紹Spring Boot的屬性配置。 傳統的Spring Web應用自定義屬性一般是通過添加一個demo.properties配置文件(
Android項目實戰(十):自定義倒計時的TextView
初始 als time class nts 時間 自定義 計時 err 原文:Android項目實戰(十):自定義倒計時的TextView項目總結 --------------------------------------------------------------
每天學點SpringCloud(三):自定義Eureka集群負載均衡策略
log util domain 避免 can val 如果 dba filters 相信看了 每天學點SpringCloud(一):簡單服務提供者消費者調用,每天學點SpringCloud(二):服務註冊與發現Eureka這兩篇的同學都了解到了我的套路,沒錯,本篇博客同樣是
[Golang] 從零開始寫Socket Server(2): 自定義通訊協議
在上一章我們做出來一個最基礎的demo後,已經可以初步實現Server和Client之間的資訊交流了~ 這一章我會介紹一下怎麼在Server和Client之間實現一個簡單的通訊協議,從而增強整個資訊交流過程的穩定性。  
iOS開發簡記(2):自定義tabbar
tabbar是放在APP底部的控制元件。常見的APP都使用tabbar來進行功能分類的管理,比如微信、QQ等等。 小程需要一個特殊一點的tabbar,要求突顯中間的那個按鈕,讓中間按鈕特別顯眼,從而引導使用者去點選。 所以,讓中間按鈕大於兩邊的按鈕,是一個基本的要求。 使用常規的UITabBar跟UIT
Vue進階(九):webstorm啟動vue專案配置
使用命令視窗執行 1. npm run mock 2.npm run dev 每次都開啟命令視窗比較麻煩,可以在webstorm內進行配置,從webstorm內啟動 選中run下面的edit configurations,scripts裡面分別選擇mock和
Unity Editor 基礎篇(二):自定義 Inspector 面板
自定義Inspector屬性面板 EditorGUILayout 編輯器介面佈局 這是一個編輯器類,如果想使用它你需要把它放到工程目錄下的Assets/Editor資料夾下。編輯器類在UnityEditor名稱空間下。所以當使用C#指令碼時,你需要在指令碼前面加上
Unity Editor 基礎篇(三):自定義視窗案例二
本文為本人學習上鍊接的筆記微有改動,請點選以上鍊接檢視原文,尊重樓主智慧財產權。 ----------------------------------------------------------------------------------------------
Java開發小技巧(二):自定義Maven依賴
我們在專案開發中經常會將一些通用的類、方法等內容進行打包,打造成我們自己的開發工具包,作為各個專案的依賴來使用。 思路 一般的做法是將專案匯出成Jar包,然後在其它專案中將其匯入,看起來很輕鬆,但是存在一個問題,如果你修改了Jar包的內容,豈不是要每個專案都重新匯入,這顯
Spring Cloud Stream消費失敗後的處理策略(二):自定義錯誤處理邏輯
應用場景 上一篇《Spring Cloud Stream消費失敗後的處理策略(一):自動重試》介紹了預設就會生效的訊息重試功能。對於一些因環境原因、網路抖動等不穩定因素引發的問題可以起到比較好的作用。但是對於諸如程式碼本身存在的邏輯錯誤等,無論重試多少次都不可能成功的問題,是無法修復的。對於這樣的情況,前文
(九)MapReduce自定義檔案讀取和輸出元件
作用 自定義檔案讀取 讀取檔案時,預設是使用讀取器 LineRecoredReader<行首偏移量,每行內容>,每讀取一次,把key和value傳給 開發者開發的Mapper元件。現在自定義檔案讀取器,可以自定義讀取檔案的方法,這樣就可以調整傳遞給Mapper元件的
解讀ASP.NET 5 & MVC6系列(16):自定義View檢視檔案查詢邏輯
之前MVC5和之前的版本中,我們要想對View檔案的路徑進行控制的話,則必須要對IViewEngine介面的FindPartialView或FindView方法進行重寫,所有的檢視引擎都繼承於該IViewEngine介面,比如預設的RazorViewEngine。但新版本MVC6中,對檢視檔案的路徑方式卻不太
微信小程式微商城(九):微信授權並實現個人中心頁面頁面
看效果 開發計劃 1、實現微信授權並獲取使用者資訊 2、個人中心頁面佈局 一、實現微信授權並獲取使用者資訊 mine.js onLoad: function () { if (app.globalData.userInfo) {