SpringBoot(三) Core Features: External Configuration(配置文件)

可以使用属性文件,YAML文件,环境变量和命令行参数来外部化配置

一、属性值可以直接注入到bean

系统属性值不可以

// application.properties

name=xiaoming
server.port=80
import org.springframework.stereotype.*;
import org.springframework.beans.factory.annotation.*;

@Component
public class MyBean {

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

    @Value("${server.port}")   // 不可以
    private String name;
    // ...

}

二、属性作为参数应用

文档: 24.5 Placeholders in Properties

server.port=80
# 自定义属性
xm.name=xiaoming
xm.gener=man
xm.reference=Name:${xm.name},Gener:${xm.gener},${server.port} // 系统属性貌似不可以

三、配置随机数(Configuring Random Values)

四、通过命令行设置属性值(Accessing Command Line Properties)

可以禁用

SpringApplication.setAddCommandLineProperties(false)

五、多环境配置

通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包

六、关于自定义配置文件

  1. 自定义配置
peron:
  lastName: xiaoming
  last: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: v2}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 2
  1. 使用注解映射属性的值
@Component
@ConfigurationProperties("person")
public class Person {
    private String lastName;
    private Integer age;
    ...
}
  1. 声明依赖 (见附录B)
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
  1. 主程序类启用@EnableConfigurationProperties 注解
@SpringBootApplication
@EnableConfigurationProperties
public class HelloWorldMainApplication {
    ...
}

参考

七、YAML

不可以使用 @PropertySource注解来加载, 只能加载properties文件

八、参考

原文地址:https://www.cnblogs.com/52liming/p/10201319.html