文章出處

spring-boot 提供了很多默認的配置項,但是開發過程中,總會有一些業務自己的配置項,下面示例了,如何添加一個自定義的配置:

一、寫一個自定義配置的類

package com.example.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * Created by 菩提樹下的楊過 on 2017/4/15.
 */
@Data
@Component
@ConfigurationProperties(prefix = "web.config")
public class WebConfig {
    private String webTitle;
    private String authorName;
    private String authorBlogUrl;
}  

注意上面的注解@ConfigurationProperties(prefix = "web.config"),這表示這個類將從屬性文件中讀取web.config開頭的屬性值

 

二、在application.yml中配置屬性

spring-boot支持properties及yml格式,不過推薦大家使用新的yml格式,看上去更清晰

web:
  config:
    webTitle: "歡迎使用SpringBoot"
    authorName: "菩提樹下的楊過"
    authorBlogUrl: "http://yjmyzz.cnblogs.com/"

 

三、來一發

為了演示效果,可以弄一個最簡單的web應用,先來一個controller

package com.example.controllers;

import com.example.config.WebConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class IndexController {

    @Autowired
    WebConfig webConfig;

    @RequestMapping("/")
    String index(ModelMap map) {
        map.addAttribute("title", webConfig.getWebTitle());
        map.addAttribute("name", webConfig.getAuthorName());
        map.addAttribute("blog", webConfig.getAuthorBlogUrl());
        return "index";
    }
}  

然后在index.html模板中寫點東西(注:本例使用了thymeleaf做為模板引擎)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title th:text="${title}"></title>
</head>
<body>
<div>
    <h1 th:text="${name}"/>
    <h1 th:text="${blog}"/>
</div>
</body>
</html>  

最后跑起來的運行效果如下:

 

四、配置文件的加載順序

把所有配置全都打在一個jar包里,顯然不是最好的做法,更常見的做法是把配置文件放在jar包外面,可以在需要時,不動java代碼的前提下修改配置,spring-boot會按以下順序加載配置文件application.properties或application.yml:

4.1 先查找jar文件同級目錄下的 ./config 子目錄 有無配置文件 (外置)

4.2 再查找jar同級目錄 有無配置文件(外置)

4.3 再查找config這個package下有無配置文件(內置)

4.4 最后才是查找classpath 下有無配置文件(內置)

 

附:源代碼下載 spring-boot-web-demo.zip

 

參考文章:

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-command-line-args


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()