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

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

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

syr1136877833   2021-08-13 我要评论
想了解解决SpringBoot扫描不到公共类的实体问题的相关内容吗,syr1136877833在本文为您仔细讲解SpringBoot扫描不到公共类实体的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点: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项目,执行结果是报空指针异常,说明对象确实自动导入失败了。经过很多查阅后发现只需要将两个项目的包名改成一样的就可以,或者使用@ComponentScan在启动类上面加入ademo和bdemo的包名即可

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

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

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

具体原因:

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

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

下面是将ademo打包了的结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码证明如果加上

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

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

springboot打包,找不到pojo实体类

修改spring-boot-maven-plugin组件

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们