我导入一个依赖项,该依赖项具有一些带有@Value
字段的服务。在我的Spring Boot应用程序中,我不使用这些服务,但仍使用此依赖项中的其他一些类,现在,如果我运行应用程序,它将无法解析占位符,例如
原因:java.lang.IllegalArgumentException:无法解决 占位符'apn.authentication.token.teamId'的值 “ $ {apn.authentication.token.teamId}”
因此,要解决此问题,我必须在属性中定义值。我搜索了一个设置,以使我的应用不会因未知值而失败,但我找不到解决方法。
即使缺少值,是否可以让我的spring boot应用启动?还是应该排除我不使用的类(如果这是唯一的选择,怎么办?)?
答案 0 :(得分:4)
您可以设置一些默认值,以便如果不存在该值,它将采用默认值
@Value("${apn.authentication.token.teamId: -99}")
private int teamId;
或 将值设置为空
@Value("${apn.authentication.token.teamId: #{null}}")
private Integer teamId;
答案 1 :(得分:1)
您可以将PropertySourcesPlaceholderConfigurer
配置为在未知的占位符上不失败:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();
propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);
return propertySourcesPlaceholderConfigurer;
}
它不会失败,也不会去解决它。通常,优良作法是使未知属性失败(它们是属性,因为您的应用程序需要它们起作用),或者添加它们的默认值。如果您的配置对于应用程序的正常运行而言并不重要,则可以创建一个额外的配置文件并在运行时读取它。