Spring读取配置文件属性

@ConfigurationProperties和@Value注解用于获取配置文件中的属性定义并绑定到Java Bean或属性中

@Value

使用@Value直接从配置文件中读取配置

配置:

1
2
3
4
aliyun.oss.file.endpoint=
aliyun.oss.file.keyId=
aliyun.oss.file.keySecret=
aliyun.oss.file.bucketName=

读取:

1
2
3
4
5
6
7
8
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;
@Value("${aliyun.oss.file.keyid}")
private String keyId;
@Value("${aliyun.oss.file.keysecret}")
private String keySecret;
@Value("${aliyun.oss.file.bucketname}")
private String bucketName;

@ConfigurationProperties

@ConfigurationProperties最适用于所有具有相同前缀的分层属性,用于将配置文件中固定前缀开头的属性绑定到POJO中,@Configuration也可以替换成@Component、@Service等其他注解。

Spring 使用一些宽松的规则来绑定属性。因此,以下变体都绑定到属性hostName

  • mail.hostName
  • mail.hostname
  • mail.host_name
  • mail.host-name
  • mail.HOST_NAME

使用

1
2
3
4
5
6
7
8
9
10
@Configuration
@ConfigurationProperties(prefix = "mail")
public class ConfigProperties {

private String hostName;
private int port;
private String from;

// standard getters and setters
}