1. 程式人生 > >SpringBoot入門系列片(九):使用自定義的屬性並配置成類

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 Server2 定義通訊協議

        在上一章我們做出來一個最基礎的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) {