文章出處
文章列表
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
參考文章:
文章列表
全站熱搜