spring-boot 速成(4) 自定义配置

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

时间: 2024-11-16 15:00:16

spring-boot 速成(4) 自定义配置的相关文章

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an

Spring Boot Dubbo applications.properties 配置清单

摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 与其纠结,不如行动学习.Innovate ,And out execute ! 』 本文提纲 一.前言 二.applications.properties 配置清单 三.@Service 服务提供者常用配置 四.@Reference 服务消费者常用配置 五.小结   运行环境:JDK 7 或 8.Maven 3.0+ 技术栈:SpringBoot 1.5+..Dubbo 2.5+ 一.

spring boot的pom.xml配置,正确生成jar包

spring boot生成的jar包提示没有主清单属性. 需要在pom里加入配置. <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&

了解Spring Boot的自动配置

Spring Boot的自动配置给开发者带来了很大的便利,当开发人员在pom文件中添加starter依赖后,maven或者gradle会自动下载很多jar包到classpath中.当Spring Boot检测到特定类的存在,就会针对这个应用做一定的配置,自动创建和织入需要的spring bean到程序上下文中. 在之前的文章中,我们只是在pom文件中增加各种starter的依赖,例如:spring-boot-starter-data-jpa, spring-boot-starter-web, s

Spring Boot 配置优先级顺序

一般在一个项目中,总是会有好多个环境.比如: 开发环境 -> 测试环境 -> 预发布环境 -> 生产环境 每个环境上的配置文件总是不一样的,甚至开发环境中每个开发者的环境可能也会有一点不同,配置读取可是一个让人有点伤脑筋的问题. Spring Boot提供了一种优先级配置读取的机制来帮助我们从这种困境中走出来. 常规情况下,我们都知道Spring Boot的配置会从application.properties中读取.实际上,从resource目录下的application.propert

spring boot应用启动原理分析

spring boot quick start 在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server. 如果之前没有使用过spring boot可以通过下面的demo来感受下. 下面以这个工程为例,演示如何启动Spring boot项目: git clone git@github.com:hengyunabc/spring-boot-demo.git mvn spring-boot

Spring Boot Profile使用

Spring Boot使用@Profile注解可以实现不同环境下配置参数的切换,任何@Component或@Configuration注解的类都可以使用@Profile注解. 例如: @Configuration @Profile("production") public class ProductionConfiguration { // ... } 通常,一个项目中可能会有多个profile场景,例如下面为test场景: @Configuration @Profile("

用Kotlin写一个基于Spring Boot的RESTful服务

Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是就 有了Spring Boot.又由于Java 8太墨迹于是有了Kotlin. 数据源使用MySql.通过Spring Boot这个基本不怎么配置的,不怎么微的微框架的Spring Data JPA和Hibernate 来访问数据. 处理依赖 这里使用Gradle来处理依赖. 首先下载官网给的初始项

使用 Spring Boot 快速构建 Spring 框架应用,PropertyPlaceholderConfigurer

Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面.如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题.每个子项目都有一定的学习曲线.开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的解决方案.在如何使用这些组件上