多模块工程中Controller中注入Service报错的问题

embedded/2024/9/24 13:26:05/

问题

2024-06-05 22:05:12,241 ERROR [http-nio-8888-exec-1][DirectJDKLog.java:175] - Servlet.service() for servlet [dispatcherServlet] in context with path [/content] threw exception [Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.chz.service.content.service.CourseBaseInfoService.queryCourseBaseList] with root cause
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.chz.service.content.service.CourseBaseInfoService.queryCourseBaseListat org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235)at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.<init>(MybatisMapperMethod.java:51)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.lambda$cachedInvoker$0(MybatisMapperProxy.java:111)at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)at com.baomidou.mybatisplus.core.toolkit.CollectionUtils.computeIfAbsent(CollectionUtils.java:117)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.cachedInvoker(MybatisMapperProxy.java:98)at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)

SpringBoot启动类默认扫描路径是:当前Application类所在的包及其子包。

在多模块工程中,Service接口在其他module中,不能被扫描到。

这是为了使:

    @AutowiredCourseBaseInfoService courseBaseInfoService;

注入不报错,可能会使用

    @ResourceCourseBaseInfoService courseBaseInfoService;

或者在启动类上添加@MapperScan

@SpringBootApplication(scanBasePackages = "org.chz")
@MapperScan("xxx.xxx")
public class ApiApplication {public static void main(String[] args) {SpringApplication.run(ApiApplication.class, args);}}

MapperScan的作用:扫描指定的包,包里面的所有接口在编译之后都会生成相应的实现类。
也就是说,在controller使用service时,获取到了一个service的实现类的实例,而没有真正继承service接口,这时运行就会报错。

解决方法

@SpringBootApplictaion(scanBasePackages="com.example"

其中:Service 及 ServiceImpl均需在com.example包下

@ComponentScan="com.example"也可以


http://www.ppmy.cn/embedded/46698.html

相关文章

植物大战僵尸杂交版2.0.88最新版+防闪退工具V2+修改工具+高清工具

植物大战僵尸杂交版&#xff0c;不仅继承原作的经典玩法&#xff0c;而且引入了全新的植物融合玩法&#xff0c;将各式各样的植物进行巧妙的杂交&#xff0c;孕育出前所未有、功能各异的全新植物。 创新的杂交合成系统 游戏引入了创新的杂交合成系统&#xff0c;让玩家可以将不…

深圳python后端面试(20240528)

深圳python后端面试&#xff08;20240528&#xff09; 面试前面试中面试后 面试前 HR:和您约了今天10.30的面试哦&#xff0c;请注意安排时间。 我&#xff1a;好的&#xff0c;已经在地铁上。 我&#xff1a;您好&#xff0c;请问是XXX吗&#xff0c;我到楼下了&#xff0c;巴…

从0开始读C++Primer|第一章 开始

1.编写一个简单的C程序 组成&#xff1a; C程序由多个函数组成&#xff0c;其中一个必须为mian函数。那么我们就有必要了解函数的组成。函数的组成&#xff1a;函数返回类型、函数名、形参列表、函数体。我感觉自己在平时经常忘记写形参和返回值&#xff0c;其实还是没有搞懂函…

kafka-消费者组-点对点测试

文章目录 1、点对点测试1.1、获取 kafka-consumer-groups.sh 的帮助信息1.2、列出所有的 消费者组1.3、创建消费者1并指定组 my_group11.4、创建消费者2并指定组 my_group11.5、创建消费者3并指定组 my_group11.6、创建生产者发送消息到 my_topic1 主题1.6.1、发送第一条消息ro…

线程池的使用

线程池 一、Java线程池介绍 在Java中&#xff0c;线程池是一种管理和复用线程的机制&#xff0c;用于提高多线程应用程序的性能和资源利用率。线程池在执行任务时&#xff0c;可以避免频繁地创建和销毁线程&#xff0c;从而减少了系统开销&#xff0c;并且能够更有效地利用系统…

arco design表单label和输入框的空间分布

表单空间分布 arco利用的栅格系统来实现label、input的大小分布 <a-form :model"formData.form" :label-col-props"{ span: 6 }" :wrapper-col-props"{ span: 18 }" >// 其它...... </a-form>栅格系统中&#xff0c;默认空间总量2…

智慧冶金:TSINGSEE青犀AI+视频技术助力打造高效、安全的生产环境

一、建设背景 冶金行业因其特殊的生产环境和工艺要求&#xff0c;对安全生产、环境保护以及质量监控等方面有着极高的要求。因此&#xff0c;将视频智能监控技术引入冶金行业&#xff0c;不仅有助于提升生产效率&#xff0c;更能有效保障生产安全&#xff0c;降低事故风险。 …

sklearn基于内容的推荐算法

sklearn基于内容的推荐算法 一、问题描述二、读取数据三、查看特征四、构建tfidf矩阵五、计算距离六、推荐函数一、问题描述 假设你喜欢到一家麻辣香锅店吃麻辣香锅,这家店的老板要开发一个菜品推荐程序。老板先整理出店里各种菜的口味特点,如脆的、甜的、辣的等记录到数据文…