配置文件中配置了参数,作为固定参数注入到类中,项目启动就报错,如下:
@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小时内删除。
留言与评论(共有 0 条评论) |