spring-boot 应用配置文件(.properties或.yml)
1、应用配置文件(.properties或.yml)
.properties在配置文件中直接写:
name=Isea533 server.port=8080
.yml
格式的配置文件如:
name: Isea533 server: port: 8080
属性配置文件的位置
spring会从classpath下的/config
目录或者classpath的根目录查找application.properties
或application.yml
。
/config
优先于classpath根目录
2、java中获取配置信息
@Value(“${xxx}”)
这种方式是最简单的,通过@Value
注解可以将属性值注入进来。
假如我们要配置一个类别下的多个属性,
比如mysql的jdbc连接配置
mysql.jdbcName=com.mysql.jdbc.Driver mysql.dbUrl=jdbc:mysql://localhost:3306/db_diary mysql.userName=root mysql.password=123456
我们贴到application.properties
然后按照前面的方案,我们在Controller里写四个属性;
package com.java1234; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @Value("${helloWorld}") private String helloWorld; @Value("${mysql.jdbcName}") private String jdbcName; @Value("${mysql.dbUrl}") private String dbUrl; @Value("${mysql.userName}") private String userName; @Value("${mysql.password}") private String password; @RequestMapping("/hello") public String say(){ return helloWorld; } @RequestMapping("/showJdbc") public String showJdbc(){ return "mysql.jdbcName:"+jdbcName+"<br/>" +"mysql.dbUrl:"+dbUrl+"<br/>" +"mysql.userName:"+userName+"<br/>" +"mysql.password:"+password; } }
@ConfigurationProperties
Spring Boot 可以方便的将属性注入到一个配置对象中。例如:
my.name=Isea533 my.port=8080 my.servers[0]=dev.bar.com my.servers[1]=foo.bar.com
对应对象:
@ConfigurationProperties(prefix="my") public class Config { private String name; private Integer port; private List<String> servers = new ArrayList<String>(); public String geName(){ return this.name; } public Integer gePort(){ return this.port; } public List<String> getServers() { return this.servers; } }
Spring Boot 会自动将prefix="my"
前缀为my
的属性注入进来。
Spring Boot 会自动转换类型,当使用List
的时候需要注意在配置中对List
进行初始化!
Spring Boot 还支持嵌套属性注入,例如:
name=isea533 jdbc.username=root jdbc.password=root ...
对应的配置类:
@ConfigurationProperties public class Config { private String name; private Jdbc jdbc; class Jdbc { private String username; private String password; //getter... } public Integer gePort(){ return this.port; } public Jdbc getJdbc() { return this.jdbc; } }
jdbc
开头的属性都会注入到Jdbc
对象中。
在@Bean方法上使用@ConfigurationProperties
@ConfigurationProperties(prefix = "foo") @Bean public FooComponent fooComponent() { ... }
Spring Boot 会将foo
开头的属性按照名字匹配注入到FooComponent
对象中。
3、属性名匹配规则
例如有如下配置对象:
@Component @ConfigurationProperties(prefix="person") public class ConnectionSettings { private String firstName; }
firstName
可以使用的属性名如下:
person.firstName
,标准的驼峰式命名person.first-name
,虚线(-
)分割方式,推荐在.properties
和.yml
配置文件中使用PERSON_FIRST_NAME
,大写下划线形式,建议在系统环境变量中使用
每天进步一步步,坚持坚持坚持