引用
https://blog.csdn.net/Michaelwubo/article/details/81289330
http://blog.didispace.com/spring-boot-learning-21-1-3/
都默认有了set方法
@Value
@Value注入是在spring注入该类的默认构造器之后,再进行set注入的。故会覆盖构造值,且不能直接静态,可通过方法间接注入(建议方法名为:set+属性名,可以不)
- 普通注入:@Value("fhc")
- 表达式驱动的的依赖项注入:
@Value("#{systemProperties['user.name']?:fhc}")
@Value("#{'fhc'.length()}")
内部为SpEL,可在内嵌入$ 反之不能。?: 后为默认参数, - 属性驱动的依赖项注入:
@Value("$")
内部为占位符(PlaceHolder)通常用来注入配置属性,:后为默认参数,配置文件中没有user时默认为fhc - 动态解析处理程序方法参数:$ 也许是这个意思?
加载List
通过[]
user[0]=F
user[1]=H
user[2]=C
通过,
user=F,H,C
使用
@Value("${user:fhc}")
public List<String> name;//[]也可
加载Map
user={n:'fhc',g:'male'}
使用
@Value("#{${user}}")
public Map<String,String> name;
@ConfigurationProperties(配置属性)
加载String
user.name=FHC
使用
@ConfigurationProperties(prefix = "user")
...
public String name;
加载List
之前已写的@value都可以
加载Map
user.user.name=f
user.user.sex=male
使用
@ConfigurationProperties(prefix = "user")
...
public Map<String,String> user;
配置文件加载方式
- 移除特殊字符
- 全小写的方式进行匹配和加载
# 等价
spring.jpa.databaseplatform=mysql
spring.jpa.database-platform=mysql
spring.jpa.databasePlatform=mysql
spring.JPA.database_platform=mysql
- 文档块
在yml文档中,可以适用---来将一个文档拆分为多个文档块。可以在不同文档块中分别定义不同的环境。
server:
port: 8082
spring:
profiles:
active: dev
---
spring:
profiles: dev
server:
port: 8083
---
spring:
profiles: prod
server:
port: 8084
多环境配置与加载顺序
spring.profiles.active=div 指明当前系统环境,会自动找到按规范命名的系统环境application-.properties 例:
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
Spring Boot为了能够更合理的重写各属性的值,使用了下面这种较为特别的属性加载顺序:
- 命令行中传入的参数。
- SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。
- java:comp/env中的JNDI属性。
- Java的系统属性,可以通过System.getProperties()获得的内容。
- 操作系统的环境变量
- 通过random.*配置的随机属性
- 位于当前应用jar包之外,针对不同环境的配置文件内容,例如: application-.properties或是YAML定义的配置文件
- 位于当前应用jar包之内,针对不同环境的配置文件内容,例如: application-.properties或是YAML定义的配置文件
- 位于当前应用jar包之外的application.properties和YAML配置内容
- 位于当前应用jar包之内的application.properties和YAML配置内容
- 在@Configuration注解修改的类中,通过@PropertySource注解定义的属性
应用默认属性,使用SpringApplication.setDefaultProperties定义的内容