我导入了一个具有某些@Value字段服务的依赖项。在我的 spring boot 应用程序中,我不使用这些服务,但我仍然使用此依赖项中的其他一些类,现在如果我运行我的应用程序,它将失败,因为它无法解析占位符,例如引起:java.lang.IllegalArgumentException:无法解析值“${apn.authentication.token.teamId}”中的占位符“apn.authentication.token.teamId”所以为了解决这个问题,我必须在我的属性中定义值。我搜索了一个设置,让我的应用程序不会因未知值而失败,但我找不到办法做到这一点。即使缺少值,有没有办法让我的 Spring Boot 应用程序启动?或者我应该排除我不使用的类(如果这是唯一的选择怎么办)?
2 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
您可以设置一些默认值,以便如果该值不存在,则采用默认值
@Value("${apn.authentication.token.teamId:-99}") private int teamId;
或将值设置为空
@Value("${apn.authentication.token.teamId:#{null}}") private Integer teamId;
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
您可以将您的配置配置PropertySourcesPlaceholderConfigurer为不会在未知占位符上失败:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);
return propertySourcesPlaceholderConfigurer;
}
它不会失败,也不会费心去解决它。通常,在未知属性(它们是属性,因为您的应用程序需要它们运行)或添加它们的默认值时失败是一种很好的做法。如果您的配置对您的应用程序运行不重要,您可以创建一个额外的配置文件并在运行时读取它。
添加回答
举报
0/150
提交
取消