我在自己的springboot项目中的启动类上同时使用了@SprinBootApplication和@ComponentScan注解, 虽然项目能够正常启动,但是访问资源后,返回404错误,随后在启动类中输出bean,发现controller创建失败:
![![[屏幕截图 2025-04-08 142118.png]]](https://i-blog.csdnimg.cn/direct/6dc67cc21a3044ca86ee8fae2acbf3a4.png)
![![[屏幕截图 2025-04-08 142310.png]]](https://i-blog.csdnimg.cn/direct/b3858bb8da814d5b962205b1d27e0123.png)
而后我将@ComponentScan去掉后资源就能访问到了.
原因
-
@SprinBootApplication本身包含了@ComponentScan注解, -
当在
@ComponentScan中指定了basePackages后,会覆盖@SpringBootApplication默认的扫描路径,可能导致Bean加载错误 -
同时使用这两个注解可能会使扫描范围发生改变。比如指定的
basePackages参数和默认扫描路径不一致,可能导致部分自动装配的Bean没有被扫描到,出现bean创建失败或其他错误。