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)
五、多环境配置
通过配置多份不同环境的配置文件,再通过打包命令指定需要打包的内容之后进行区分打包
六、关于自定义配置文件
- 自定义配置
 
peron:
  lastName: xiaoming
  last: 18
  boss: false
  birth: 2017/12/12
  maps: {k1: v1,k2: v2}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 2
- 使用注解映射属性的值
 
@Component
@ConfigurationProperties("person")
public class Person {
    private String lastName;
    private Integer age;
    ...
}
- 声明依赖 (见附录B)
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
- 主程序类启用
@EnableConfigurationProperties注解 
@SpringBootApplication
@EnableConfigurationProperties
public class HelloWorldMainApplication {
    ...
}
参考
- 文档: 24.3 Application Property Files
 - 附录B.配置元数据: B.3 Generating Your Own Metadata by Using the Annotation Processor
 
七、YAML
不可以使用 @PropertySource注解来加载, 只能加载properties文件
                    
                
                
            
        
浙公网安备 33010602011771号