@Value注解
作用
在 Spring 组件中使用 @Value 注解的方式,很方便的读取.properties/.yaml文件的配置值,而且可以设置默认值。
使用
使用类
@RestController
public class ConfigController {
// ①未指定默认值
@Value("${user.username}")
private String username;
// ②指定默认值为“unknown”
@Value("${projectName:unknown}")
private String projectName;
}
对应的yaml文件:
user:
username: jie
projectName: demo
@ConditionalOnProperty
作用
在spring boot中有时候需要控制配置类是否生效,可以使用@ConditionalOnProperty注解来控制@Configuration是否生效。
使用
用法一:
配置类:
@Configuration
@ConditionalOnProperty(prefix = "x.y", name = "test", havingValue = "1", matchIfMissing = true)
public class XConfiguration {...}
配置文件:
x.y.test=1
解释:
prefix为配置文件中的前缀.
name为配置的名字.
havingValue是与配置的值对比值,当两个值相同返回true,配置类生效.
matchIfMissing属性为true时,配置文件中缺少对应的value或name的对应的属性值,也会注入成功.
用法二:
@Configuration
@ConditionalOnProperty(value="com.dependency")
public class XConfiguration {...}
配置文件:
com.dependency=true
以bool值判断使不使用配置类。
注意和@Value的区别:
1. 用处不同
2. 只有@Value可以使用默认值