【低级坑记录01】SpringBoot 多模块项目(module)Service自动注入(@Autowired)

【低级坑记录01】SpringBoot 多模块项目(module)Service自动注入(@Resource)

近期打算使用 SpringBoot 开始独立搭建一个项目,因此使用Spring-boot 先进行了多模块的拆分,拆分的后如下: 其中 service 依赖 clinet, web 依赖 client、service
在这里插入图片描述

接口的实现包路径, client 下 interface、 service 下 serviceImple, web 下Controller 和 Application启动类
在这里插入图片描述

其中

而后开始编写接口,结果在运行时遇到了报错:
Error creating bean with name ‘xxxController’: Injection of resource dependencies,
Consider defining a bean of type ‘com.example.service.xxxService’ in in your configuration. 的报错,该问题的原因一般都是:项目已被分解为不同的模块,需要指定独立模块要扫描的类或包,
解决思路是:

  1. 在 Application启动类上指定扫描的包,我的项目包路径都是 com.example ,因此在启动类上增加

@ComponentScan(basePackages = “com.example.*”)

, 再次启动, 还是报错,问题没有解决, 再去度娘找答案,还是一无所获, 大家的思路都是上述解决方案,或者在 @ComponentScan 进行指定类, 即指定interface和serviceImpl所在包和 controller所在包,修改为如下:

@ComponentScan(basePackages ={ “com.example.service”, “com.example.controller”})

分析了下这个写法跟 com.example.* 的写法完全一致,因此运行结果还是预期的报错,此时尝试了下仅保留 com.example.service, 进行运行,即修改为

@ComponentScan(basePackages ={ “com.example.service”})

结果启动ok了, 感觉问题解决了, 然并卵, 访问接口后报404 , 但是这个action 让我意识到应该是最终运行的包问题,那么问题应该出在打包的设置中, 果断去看 blog-web中的打包的设置,发现缺少以下配置项 repackage , 该配置项 可以把依赖的包都打包到生成的Jar包中, pom中添加后,再次运行一切ok了!!!

完整的打包设置如下

<plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>

特此记录下该问题的解决过程,cg: 报错问题相对容易定位,但是实际解决真的需要关注每个细节啊, 真的没想到是之前拆分遗留的坑最终导致的,没有继续深挖深层次的原因,留待后续后续吧! _

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值