1.问题描述:
????昨天下午在图书馆跟着慕课网视频进行实战学习,学到3-3搭建服务???,一步步跟着敲代码、构建项目,跟着运行时报错,而且和视频演示的报错的信息完全不一样:
???? A component required a bean of type 'com.course.server.service.TestService' that could not be found
????它的意思时:spring boot启动项目读取bean组件时找不到你说的这个组件,你得看看是否配置了这个bean。
2.处理过程:
???? 从昨天下午开始一直百度和google,一直尝试,我最开始的思路是:会不会是因为没有打包server这个jar包,而且没有引入(install)到本地maven仓库里,所以在External Libraries里找不到com.course.server这个jar包。后来发现不是,看依赖,system是引用了server这个依赖的。
???? 今天继续战斗,又google了一会,觉得应该要从spring boot的启动着手,要弄懂启动的原理——@SpringBootApplication这个注解,这个注解包含了:
???? @SpringBootConfiguration
???? @Configuration
???? @EnableAutoConfiguration
???? @AutoConfigurationPackage
???? @ComponentScan
这五个注解,相当于一个注解就包含了自动配置和自动扫描,其中@ComponentScan就是在项目启动从启动类所在的包往下扫描所有注解为IOC容器的组件bean的类(@Service、@component@Controller和@ Repository),然后注册到IOC容器里,所以报错: A component required a bean of type 'com.course.server.service.TestService' that could not be found,就是因为在指定的包及其子包下扫描不到你说的那个包和类,所以报错了
3.问题解决:
???? 将注解修改为:
@SpringBootApplication(scanBasePackages = {"com.course"}),意思是从com.course这个父项目包开始扫描,这样就可以扫描到com.course.server这个包了。
4.总结:
???? 慕课网上的实战课说是手把手一步步教,但是他们也怕课被盗,所以有些地方其实一带而过或者直接不说,这样你们卖盗版跟着练,练到一半发现自己根本处理不了报错,那你就会乖乖叫几百块进他们课程群问老师,实现防盗盈利的目的。报错关键问题提炼:解决SpringBoot多工程时jar包中注解不能扫描生效问题