记录
在通过AOP+自定义注解实现操作日志统一管理功能时,为了减少代码冗余,将AOP代码和注解代码放在公共模块,再使用pom依赖方式将其注入到需要使用的微服务模块。
在此期间遇到以下问题
问题一
公共模块打包时,一直抛出 unable to find main class错误,经查明是因为使用的SpringBoot生成的项目,其所使用的Maven插件会默认寻找签名是public static void main(String[] args)的方法,没有则会报错
所采用的解决方案是选用Apache的Maven插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
问题二
在注入依赖后,项目启动并进行测试时发现AOP并没有生效,经查阅资料确定,注入的微服务模块中,其启动类并没有扫描到公共模块中的自定义注解类所在路径。
公共模块所在的包是“com.demo.common”,所使用的微服务模块所在的包是“com.demo.user10010”,因此导致common包没有被扫描进ioc容器。
解决方法是:通过在所注入依赖的微服务模块启动类添加 scanBasePackages = "com.demo"
@SpringBootApplication(scanBasePackages = "com.demo")