@ConfigurationProperties 是spring-boot中特有的注解。
使用场景如下:
假设application.properties 文件存在redis配置如下
redis config
redis.config.maxTotal=5000
redis.config.maxIdle=10
redis.config.maxWaitMillis=5000
redis.config.testWhileIdle=true
redis.config.numTestsPerEvictionRun=100
redis.config.timeBetweenEvictionRunsMillis=6000
redis.config.testOnBorrow=true
redis.config.testOnReturn=true
redis.config.host=127.0.0.1
redis.config.port=6379
redis.config.name=localhost_redis
redis.config.timeout=5000
redis.config.weight=1
redis.config.password=
在定义的Redis配置类中
@Configuration
@ConfigurationProperties(prefix = "redis.config")
@Data
public class RedisConfiguration {
private int maxTotal;
private int maxIdle;
private int maxWaitMillis;
private boolean testWhileIdle;
private int numTestsPerEvictionRun;
private int timeBetweenEvictionRunsMillis;
private boolean testOnBorrow;
private boolean testOnReturn;
private String host;
private String name;
private int port;
private int timeout;
private int weight;
private String password;
// @ConfigurationProperties(prefix = “redis.config”) 这个注解,可以使属性文件中的值和类中的属性对应起来。
注意:在spring boot中除了使用这个注解读取属性文件值外,还可以是用@Value注解。
@Value(“${spring.redis.weight}”)
private int weight;
另一个例子
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username: root
password: root
driverClassName: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
在配置类中
@Component
@ConfigurationProperties(prefix = "spring.datasource")
@PropertySource("classpath:druid.properties")
public class DruidDataSourceSettings {
private String driverClassName;
private String url;
private String username;
private String password;
@Value("${druid.initialSize}")
private int initialSize;
}
这样就取到了application.yml中的值。
而通过@PropertiesSource从druid.properties中得到initialSize;