猿问

如果属性中没有提供@Value,不要失败?

我导入了一个具有某些@Value字段服务的依赖项。在我的 spring boot 应用程序中,我不使用这些服务,但我仍然使用此依赖项中的其他一些类,现在如果我运行我的应用程序,它将失败,因为它无法解析占位符,例如

引起:java.lang.IllegalArgumentException:无法解析值“${apn.authentication.token.teamId}”中的占位符“apn.authentication.token.teamId”

所以为了解决这个问题,我必须在我的属性中定义值。我搜索了一个设置,让我的应用程序不会因未知值而失败,但我找不到办法做到这一点。

即使缺少值,有没有办法让我的 Spring Boot 应用程序启动?或者我应该排除我不使用的类(如果这是唯一的选择怎么办)?


慕无忌1623718
浏览 219回答 2
2回答

慕田峪4524236

您可以设置一些默认值,以便如果该值不存在,则采用默认值@Value("${apn.authentication.token.teamId:-99}") private int teamId;或将值设置为空@Value("${apn.authentication.token.teamId:#{null}}") private Integer teamId;

梵蒂冈之花

您可以将您的配置配置PropertySourcesPlaceholderConfigurer为不会在未知占位符上失败:@Beanpublic static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();    propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);    return propertySourcesPlaceholderConfigurer;}它不会失败,也不会费心去解决它。通常,在未知属性(它们是属性,因为您的应用程序需要它们运行)或添加它们的默认值时失败是一种很好的做法。如果您的配置对您的应用程序运行不重要,您可以创建一个额外的配置文件并在运行时读取它。
随时随地看视频慕课网APP

相关分类

Java
我要回答