springboot配置文件值注入

使用@ConfigurationProperties注解

配置文件

person:
  #注入普通屬性
  lastName: zhangsan
  age: 18
  birth: 1995/07/09
  boss: true
  #map
  maps: {key1: v1, key2: v2}
  #list
  lists: [1,2,a,b]
  #對象
  dog:
    name: xiaohua
    age: 3

javabean

package com.xun.springboot_config.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @program:
 * @description:
 * @author: 尋牲阁。
 * @create: 2018-06-05 22:32
 **/

/**
 * 將配置文件中的每一個屬性的值映射到這個組件這種
 * @ConfigurationProperties:告訴springboot將本類中的所有屬性和配置文件進行綁定
 * prefix = "person" 指定配置文件中哪個下面的屬性進行映射
 *
 * 只有這個組件是容器中的組件醇蝴,才能提供@ConfigurationProperties功能
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Date birth;
    private boolean boss;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

    get set toString方法省略冗美。。状答。
}
package com.xun.springboot_config.bean;

/**
 * @program:
 * @description:
 * @author: 尋冷守。
 * @create: 2018-06-05 22:35
 **/
public class Dog {

    private String name;
    private Integer age;
    get set toString方法省略。惊科。拍摇。
}

使用springboot測試方法進行測試

package com.xun.springboot_config;

import com.xun.springboot_config.bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootConfigApplicationTests {

    @Autowired
    Person person;
    @Test
    public void contextLoads() {
        System.out.println(person);
    }

}

測試結果:
Person{lastName='zhangsan', age=18, birth=Sun Jul 09 00:00:00 CST 1995, boss=true, maps={key1=v1, key2=v2}, lists=[1, 2, a, b], dog=Dog{name='xiaohua', age=3}}

使用@Value注解注入

@Component
public class Person {
    //只支持簡單類型封裝
    @Value("${person.lastName}")
    private String lastName;
    private Integer age;
    private Date birth;
    private boolean boss;

    //不支持復雜類型封裝
    @Value("${person.maps}")
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

兩者對比

如果說我們只是在某個業(yè)務中需要獲取一下配置文件中的某項值,使用@Value馆截;
例如:

package com.xun.springboot_config.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @program:
 * @description:
 * @author: 尋充活。
 * @create: 2018-06-05 23:36
 **/
@RestController
public class HelloController {

    @Value("${person.lastName}")
    private String name;

    @RequestMapping("hello")
    public String sayHello(){
        return "hello "+name;
    }

}

結果就是:hello zhangsan
如果專門編寫了一個javabean來和配置文件進行映射,我們就直接使用@ConfigurationProperties(并且這個注解支持參數(shù)校驗)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蜡娶,一起剝皮案震驚了整個濱河市混卵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窖张,老刑警劉巖淮菠,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荤堪,居然都是意外死亡合陵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門澄阳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拥知,“玉大人,你說我怎么就攤上這事碎赢〉吞蓿” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵肮塞,是天一觀的道長襟齿。 經(jīng)常有香客問我,道長枕赵,這世上最難降的妖魔是什么猜欺? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拷窜,結果婚禮上开皿,老公的妹妹穿的比我還像新娘。我一直安慰自己篮昧,他們只是感情好赋荆,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懊昨,像睡著了一般窄潭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酵颁,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天嫉你,我揣著相機與錄音信认,去河邊找鬼。 笑死均抽,一個胖子當著我的面吹牛嫁赏,可吹牛的內容都是我干的。 我是一名探鬼主播油挥,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼潦蝇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了深寥?” 一聲冷哼從身側響起攘乒,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惋鹅,沒想到半個月后则酝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡闰集,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年沽讹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片武鲁。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡爽雄,死狀恐怖,靈堂內的尸體忽然破棺而出沐鼠,到底是詐尸還是另有隱情挚瘟,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布饲梭,位于F島的核電站乘盖,受9級特大地震影響,放射性物質發(fā)生泄漏憔涉。R本人自食惡果不足惜订框,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望监氢。 院中可真熱鬧布蔗,春花似錦藤违、人聲如沸浪腐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽议街。三九已至,卻和暖如春璧榄,著一層夾襖步出監(jiān)牢的瞬間特漩,已是汗流浹背吧雹。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涂身,地道東北人雄卷。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像蛤售,于是被迫代替她去往敵國和親丁鹉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容

  • SpringMVC原理分析 Spring Boot學習 5悴能、Hello World探究 1揣钦、POM文件 1、父項目...
    jack_jerry閱讀 1,296評論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理漠酿,服務發(fā)現(xiàn)冯凹,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,811評論 6 342
  • 上個月開始炒嘲,試著跑步宇姚,因為每天都想看到小白的執(zhí)念,竟也基本堅持下來了(中間斷過一兩天夫凸,因為跑步的行頭前一天晚上忘在...
    一般小涼閱讀 632評論 0 0