首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring引导yaml属性布尔值不被识别

Spring引导yaml属性布尔值不被识别
EN

Stack Overflow用户
提问于 2021-09-30 12:11:48
回答 2查看 580关注 0票数 0

我在application.yml中有以下内容:

代码语言:javascript
复制
perscel:
  mail:
    featuretoggle: true

以下领域:

代码语言:javascript
复制
@Value("${perscel.mail.featuretoggle}")
private final Boolean isFeatureActive;

在以下方面的成果:

构造函数的

参数7在be.cm.apps.press.perscel3.cron.CronJob中需要一个无法找到的'java.lang.Boolean‘类型的bean。

对于这个意外的问题有点恼火,显然布尔字段被设置为true。

请注意,相同名称空间下的所有其他字段都已正确填充,导致问题的实际上只有布尔字段。

我没有读取属性文件的附加配置。

春季引导启动器xparent版本2.4.2

编辑:AllArgsConstructor由lombok注释。

我有以下属性:

代码语言:javascript
复制
@Value("${perscel.mail.featuretoggle}")
private final Boolean isFeatureActive;

@Value("#{'${perscel.mail.recipients.developers}'.split(',')}")
private final List<String> emailRecipientsDevelopers;

@Value("#{'${perscel.mail.recipients.admins}'.split(',')}")
private final List<String> emailRecipientsAdmins;

这两个列表正常工作,我只有在添加布尔值之后才有问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-01 04:22:22

注意,Spring抱怨的是构造函数,而不是字段注释。因此,这主要是因为Lombok在自动生成的代码中缺少构造函数param上的@Value注释。

你基本上有两个选择:

  1. Remove @AllArgsConstructor (和final字段修饰符),用@Autowired标记所有bean字段,让Spring直接为您设置字段,而不是显式地使用带有所有参数的
  2. 构造函数,而不是依赖Lombok自动生成的字段。但是这次将@Value注释放在相应的构造函数param.

上。

票数 0
EN

Stack Overflow用户

发布于 2021-10-01 08:07:06

问题是将所有@Value字段标记为final。然后,Lombok会将这些字段添加到构造函数中,因为您已经用@AllArgsConstructor进行了注释。

Spring初始化这个bean时,Spring假设构造函数中的所有字段都是Spring托管bean,Spring试图将它们autowire到这个bean。

简单的解决方法是从这些字段中删除所有final单词并删除@AllArgsConstructor。删除@AllArgsConstructor总是安全的,除非您完全知道Spring bean中实际上在做什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69392042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档