Parameter 5 of constructor in gov.msa.ller.distribute.DistributeController

阅读: 评论:0

Parameter 5 of constructor in gov.msa.ller.distribute.DistributeController

Parameter 5 of constructor in gov.msa.ller.distribute.DistributeController


问题描述:

配置文件中配置了参数,作为固定参数注入到类中,项目启动就报错,如下:

@Value("${Id}")
private  String mqCenterId;
***************************
APPLICATION FAILED TO START
***************************Description:Parameter 5 of constructor in gov.msa.ller.distribute.DistributeController required a bean of type 'java.lang.String' that could not be found.Action:Consider defining a bean of type 'java.lang.String' in your configuration.

原因分析:

可能是类上面的注解用错了,有冲突。

@Slf4j
@RestController
@AllArgsConstructor //是此注解有问题,导致注入配置参数启动报错
@RequestMapping("/xxxx")
@Api(tags = "xxx")

解决方案:

@Slf4j
@RestController
@RequiredArgsConstructor  //使用此注解问题解决
@RequestMapping("/xxx")
@Api(tags = "xxx")

原因分析:注解冲突问题,了解注解的作用很重要。@AllArgsConstructor这个是把类中的所有参数注入到了spring的容器中,在容器中无法找到对应的参数类型,也就是String没有在容器中被管理,所以就会报错,而@RequiredArgsConstructor 的话:

这个是基于lombok的使用时必须导入lombok包。

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version>
</dependency>

同时注意几点:
1.必须声明的变量为final

​ 2.根据构造器注入的,相当于当容器调用带有一组参数的类构造函数时,基于构造函数的 DI 就完成了,其中每个参数代表一个对其他类的依赖。基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入

使用当我们需要注入Bean的时候可以直接在类名称上使用。代替了Autowrited注解
 

@RequiredArgsConstructor
@RestController
@RequestMapping("/omponent")
public class ComponentController {private final ComponentService ComponentService;
} 

本文发布于:2024-01-28 02:25:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063799434111.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:gov   msa   Parameter   constructor   oa
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23