我在application.yml中有以下内容:
perscel:
mail:
featuretoggle: true以下领域:
@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注释。
我有以下属性:
@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;这两个列表正常工作,我只有在添加布尔值之后才有问题。
发布于 2021-10-01 04:22:22
注意,Spring抱怨的是构造函数,而不是字段注释。因此,这主要是因为Lombok在自动生成的代码中缺少构造函数param上的@Value注释。
你基本上有两个选择:
@AllArgsConstructor (和final字段修饰符),用@Autowired标记所有bean字段,让Spring直接为您设置字段,而不是显式地使用带有所有参数的@Value注释放在相应的构造函数param.上。
发布于 2021-10-01 08:07:06
问题是将所有@Value字段标记为final。然后,Lombok会将这些字段添加到构造函数中,因为您已经用@AllArgsConstructor进行了注释。
当Spring初始化这个bean时,Spring假设构造函数中的所有字段都是Spring托管bean,Spring试图将它们autowire到这个bean。
简单的解决方法是从这些字段中删除所有final单词并删除@AllArgsConstructor。删除@AllArgsConstructor总是安全的,除非您完全知道Spring bean中实际上在做什么。
https://stackoverflow.com/questions/69392042
复制相似问题