场景:调用默认配置文件中参数
方法:使用@Value注解读取
@Value("${device.switch.threshold}")
private Integer switchingTimesThreshold;
场景二:获取自定义properties文件中参数
方法:
1、添加获取方法
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "template")
@Configuration
public class UserPolicyTemplateConfigure {
public static List<UserPolicyParamsDTO> USER_POLICY_TEMPLATE;
//DTO里的字段和配置文件字段一致:eg:tlf、name
private List<UserPolicyParamsDTO> userPolicyTemplate;
/**
* Init template configure.
*/
@PostConstruct
private void initTemplateConfigure() {
UserPolicyTemplateConfigure.USER_POLICY_TEMPLATE = userPolicyTemplate;
}
}
@ConfigurationProperties(prefix = "template")注解会根据这个前缀来获取参数
userPolicy.properties文件如下,我这里模板是个list<DTO>
template.userPolicyTemplate[0].tlf = -
template.userPolicyTemplate[0].name = -
如果properties文件放在项目里,命名方式为application-userPolicy.properties,放在resources文件夹里
如果启动后找不到文件可以在方法UserPolicyTemplateConfigure 上添加注解
@PropertySource(value = {"classpath:userPolicy.properties"})
如果跟我一样是线上配置中心apollo,无需添加上边注解
2、新增的properties引用的方式,根据实际情况选一个
#本地引用方式
spring.profiles.active=dev,userPolicy
#线上apollo配置中心引用方式
apollo.bootstrap.namespaces=application,userPolicy
3、调用
public Result getUserPolicyParams() {
List<UserPolicyParamsDTO> userPolicyParamsDTOList = UserPolicyTemplateConfigure.USER_POLICY_TEMPLATE;
。。。
}
以上就可以获取到配置文件中数据了
其他问题
项目是容器化部署,部署的时候需要对应修改配置文件,配置才会生效
image.png
网友评论