SpringBoot配置之application.properties

简述

Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者src/main/resources/config下。在 src/main/resources/config 下的优先级高 。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。

自定义属性

在application.properties

com.example.name="MJ"
@RestController
public class HelloController {
   @Value("${com.example.name}")
    private String name;

    @GetMapping("/user")
    public String info(){
        return  name;
    }
}

属性映射到类中

@Configuration
@ConfigurationProperties(prefix = "com.example")
public class ConfigBean {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
@RestController
@EnableConfigurationProperties({ConfigBean.class})
public class HelloController {

    @Autowired
    ConfigBean configBean;

    @GetMapping("/user2")
    public String info2(){
        String name = configBean.getName();
        return name;
    }   
}

使用自定义配置文件

新建 test.properties

my.name="who"
@Configuration
@ConfigurationProperties(prefix = "my")
@PropertySource("classpath:test.properties")
public class ConfigTestBean {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
@RestController
@EnableConfigurationProperties({ConfigBean.class,ConfigTestBean.class})
public class HelloController {

    @Autowired
    ConfigBean configBean;

    @Autowired
    ConfigTestBean configTestBean;

    @GetMapping("/user2")
    public String info2(){
        String name = configBean.getName();
        return name;
    }

    @GetMapping("/user3")
    public String info3(){
        String name = configTestBean.getName();
        return  name;
    }
}

@Component 或 @Configuration 都可以当 ,会被 当成 bean 来管理

随机值分配

my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,222222]}

参数间引用

com.example.name="MJ"
com.example.say="hello"
com.example.example=${com.example.name} say : ${com.example.say}

Profile-多环境配置

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

  • application-dev.properties:开发环境
  • application-prod.properties:生产环境

想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。

启动项目动时候带上

java -jar xxx.jar --spring.profiles.active=dev

参考:
Spring Boot干货系列:配置文件解析
江南一点雨
江南一点雨

推荐阅读更多精彩内容