为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕无忌1623718 2021-12-22 20:32:45
我导入了一个具有某些@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;


查看完整回答
反对 回复 2021-12-22
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

您可以将您的配置配置PropertySourcesPlaceholderConfigurer为不会在未知占位符上失败:


@Bean

public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {

    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer();

    propertySourcesPlaceholderConfigurer.setIgnoreUnresolvablePlaceholders(true);

    return propertySourcesPlaceholderConfigurer;

}

它不会失败,也不会费心去解决它。通常,在未知属性(它们是属性,因为您的应用程序需要它们运行)或添加它们的默认值时失败是一种很好的做法。如果您的配置对您的应用程序运行不重要,您可以创建一个额外的配置文件并在运行时读取它。


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 218 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信