1. 起因:

自定义一个接口日志注解。打算为所有的接口打印日志和耗时等信息。

新增@ComponentScan,访问接口404?_问题定位

将定义的@IfLog注解加到HiController的/hi接口

新增@ComponentScan,访问接口404?_ComponentScan_02

因为Application仅扫描和他同一个包下所有类,所以在启动类上增加了@ComponentScan({"com.wxy.log.common"})用于扫描新增的日志切面。

新增@ComponentScan,访问接口404?_ComponentScan_03

访问接口/hi,竟然404?

新增@ComponentScan,访问接口404?_java_04

2. 经过:

(1) 首先看了下请求的url 和 path是否正确。(没问题啊)这是什么情况?

(2) 404找不到页面,也就是说可能Controller层的接口有可能没起作用(难道是没扫描到?)。

(3) 再看下启动类。恍然大悟

新增@ComponentScan,访问接口404?_java_05

3. 结果:

启动类@ComponentScan注解增加 "com.wxy.user"

新增@ComponentScan,访问接口404?_ComponentScan_06

访问接口并打印日志:

新增@ComponentScan,访问接口404?_ComponentScan_07

新增@ComponentScan,访问接口404?_问题定位_08

4. 总结:

刚刚的案例中使用@ComponentScan注解,漏掉了本工程下的包名称,导致没有扫描到启动类同一级下面的包。所以引入其他jar包或者引入不在启动类同一级下的包时,需要注意增加扫描注解或配置文件,扫描全部需要spring管理的包全路径。