当前位置: 首页 > 知识库问答 >
问题:

java - 我想在spring cloud alibaba里面,让其他业务模块 的entity mapper service 都集中到 common 里面?

夏立果
2024-03-26

使用的是 spring cloud alibaba 2021.0.1 + spring boot 2.6.4
目录布局:
1、common模块:存放 model、mapper、service、impl、连接数据库、统一异常处理、redis josn数据格式化、统一响应、swagger、mp、cors
2、merchant模块(商户端):主要编辑controller对外开放api接口
3、supply模块(供货商):主要编辑controller对外开放api接口

问题描述:
目前在做 merchant模块,启动时提示错误:
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springApplicationAdminRegistrar' defined in class path resource [org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication
de153284ee0293c1957a1adb5b4189c.png
尝试3~5小时没解决,特来思否求助大佬们

特别描述:
1、目前swagger2实际测试成功。将swagger2全部内容放到common模块,在商户端编写controller时,进行添加注解接口:启动 swagger2可以显示商户端的端口中打开文档地址显示controller中定义的接口文档

尝试失败过的方法:
1、在启动类上加包扫描:结果失败,提示另一个错误

// @SpringBootApplication@SpringBootApplication(scanBasePackages = "com.quanneng")@Slf4j@MapperScan("com.quanneng.mapper")public class MerchantApiApplication { ……}

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerAdapter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springApplicationAdminRegistrar' defined in class path resource [org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication
-->后百度,解决无果

2、尝试

@ComponentScan({"com.*"})public class MerchantApiApplication {    ……}

Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'merchantController': Unsatisfied dependency expressed through field 'merchantService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'merchantService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'merchantMapper' defined in file [D:\biancheng\git_cangku_java_spring_cloud_alibaba\liuliang_mall_java\common\target\classes\com\quanneng\mapper\MerchantMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

-->配置了 mybatisPlusConfig 无果、添加 datasource 到 merchant 模块yml文件 无果。

共有1个答案

西门安歌
2024-03-26

看不到你的代码,不太具体知道什么问题。

根据你的描述,是能够实现的。

简单来说,就是 merchant 和 supply 都依赖 common,你不想写重复的代码。

第一个,spring 包扫描配这个: scanBasePackages = "com.quanneng",注意,如果有多个模块,都需要配。

第二个,mapper 接口配置:@MapperScan("com.quanneng.mapper"),

第三个,swagger,要注意接口扫描配置,这个其实可以放在端上

第4个,统一异常处理,只能有一个

另外,值得一提的是,你还可以这样,你可以把 common 写成一个 spring-boot-starter,这样你就不用处理包扫描的问题了。我目前就是这样,写一些业务组件。

 类似资料:
  • 前言(文中有福利,一定记得要看完) 阿里招聘开始了,最近为小伙伴们准备了校招日程(全),有需要大家可以收藏起来,会持续更新。欢迎和小码哥聊一聊:扣扣群:917138995,可帮查内推进度 &探讨技术细节&刷题经验,最新秋招信息。 综合阿里的招聘信息可以知道阿里P7年收入大部分30-40k左右,另外还有股票和期权。当然高薪资也意味着工作很累,不只是工作忙,而且工作压力也不容小觑。另外社招员工2年后才

  • 我有一个Spring批处理应用程序。我的Spring批处理应用程序由两个步骤组成。 提取csv数据,添加到记录tbl 提取记录tbl行,根据数据验证解析到Food tbl。 步骤2使用微线程完成 我需要处理记录行tbl,无论是否验证,当前日期时间都会添加回记录行 a.验证失败,DateTime错误代码也将添加到记录行中 b.通过验证,日期时间添加到记录行中。Row也将添加到食品tbl中。 在步骤2

  • 该部分 API 将帮助您使用其他 mBuild 电子模块。 注意:你需要额外购买包含 mBuild 电子模块扩展包或套装来获得 mBuild 模块以使用这些功能。 省略代码中的halocode 注意:该部分 API 省略了“halocode.”,本篇提及的所有 API 均省略了“halocode.” ,如 led_driver.off( )实际为halocode.led_driver.off()。

  • 问题内容: 当我启用gomodules并构建go程序时,将下载所需的软件包。 但我不能找到他们或。 它们存储在哪里? 问题答案: 对于Go 1.11,它们存储在

  • 一面 Redis Cell,令牌桶算法以及介绍其他几个流量控制算法 如何使用Redis实现验证码防刷 Elasticsearch了解吗,倒排索引原理 讲讲Hyperloglog和Bitmap 项目里Redis分布式锁的实现,Lua脚本了解吗,锁误删和超时问题,Reddison RabbitMQ项目中使用场景 RabbitMQ数据丢失问题,三个节点丢失的各种解决方案?讲了持久化,ack和事务 vol

  • 我的问题: 1。在哪里存储目标服务器的公共SSH密钥? 2。如何指定要使用哪个公钥?