解决SpringBoot扫描不到公共类的实体问题

网友投稿 296 2022-10-05


解决SpringBoot扫描不到公共类的实体问题

SpringBoot扫描不到公共类的实体

我的项目结构是

parent

ademo

bdemo

parent是一个大项目,项目里面有web、service和entity三个子项目 ademo 依赖于bdemo里面的实体。

aProject项目的包结构是com.test.ademo

bProject项目的包结构是com.test.bdemo

以下的问题是我没有忘记标注@Component、@Service等容器注解

在ademo项目里面使用@Autowired的时候有异常说是可能会Autowired失败,但是编译没有问题,我就直接run项目,执行结果是报空指针异常,说明对象确实自动导入失败了。经过很多查阅后发现只需要将两个项目的包名改成一样的就可以,或者使用@ComponentScahttp://n在启动类上面加入ademo和bdemo的包名即可

1、将ademo和bdemo的包名改成com.ttnDmOnoxgest.project

2、在ademo的启动类上面加上@ComponentScan({“com.example.ademo”,“com.example.bdemo”})

在执行第二点的时候注意就是如果在启动类上面标注了@ComponentScan就会使会使@SpringBootApplication注解中包含的@ComponentScan注解(即默认的扫描包的位置)失效

具体原因:

因为启动类上面的@SpringBootApplication里面默认包含了一个@ComponentScan注解,这个注解默认情况下是扫描该类所属包下面的所有类,包含子目录中的tnDmOnoxg类。

因为所有网上的注解都是上面那样的所以我就去想着是不是打包的时候将bdemo的项目跟ademo可结合在了一起所以拿不到com.test.ademo包下的文件,但是拿mvn打包后发现并不是。哈哈

下面是将ademo打包了的结构

代码证明如果加上

@ComponentScan({“com.example.ademo”,“com.example.bdemo”})

是可以扫描到UserService类的,如果不加是获取不到的,应该跟SpringBoot底层加载类是相关的,大家有兴趣可以去看一下底层,在底层的我就不再这里讲了,自己去看吧。

springboot打包,找不到pojo实体类

修改spring-boot-maven-plugin组件


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HVV奇兵—网页防篡改系统在网络安全实战演习中的妙用(上)
下一篇:网络安全基础知识入门!网络安全学习教程(网络安全基础知识培训)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~