@ComponentScan注解在使用时的一些误解与分析

1.前几天心血来潮写了几行代码,但是却出现了一个spring框架的问题,是关于spring中自动注入的问题。
2.我当时找了好久都没有找到,后来发现了问题。
3.我的代码结构是SpringBoot多模块结构。
4.我有两个模块:mall_admin,mall_common,我的mall_admin和mall_common两个模块共同隶属于mall_parent父模块。
5.我的mall_admin模块里面声明了mall_common依赖,同时mall_admin模块里面写了运行类,mall_common为通用模块,一般用作调用使用。
6.我的mall_admin的包结构为cn.xhc.mall.mall_admin.*(*可以为controller,service,service.impl,config,dao等),同时我的运行类是在cn.xhc.mall.mall_admin包里面。
7.我的mall_common的包结构为cn.xhc.mall.mall_common.*(*可以为config,utils,service,service.impl等)。
8.我在mall_admin里面的service层自动注入mall_common里面的service层的类,但是却报注入失败的错误。
9.我起初找了很久,并且还在启动类上加上了@ComponentScan注解,并标记上了包名,但是还是找不到自动注入失败的错误。
10.我一直以为是我的mall_common模块里面service层的代码写错误,所以才导致自动注入不成功。
11.但是我找了好久,没有发现错误的地方,这令我十分郁闷,我尝试了许多方法,甚至尝试使用@Import注解,但是还是没有成功。

1.最后我终于发现了原因,其实我使用@ComponentScan注解并没有什么问题,但是我的启动类放在了错误的包下面,最开始我将我的启动类放在了cn.xhc.mall.mall_admin下面,但是mall_common中的service放在了cn.xhc.mall.mall_common.service包中,所以我扫描不到mall_common中的@Service注解,因为自动扫描只会扫描启动类同级或者启动类下面的包中的spring注解,所以只能扫描到cn.xhc.mall.mall_admin同级或者下面的包中的spring注解,而我的mall_common中service是在cn.xhc.mall.mall_common中,所以扫描不到,不能注册为spring中的bean对象,所以不能再mall_admin中的service中自动注入mall_common中的service。
2.最后我将启动类放在cn.xhc.mall包下,并加上@ComponentScan注解,成功解决问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值