SpringBoot調用公共模塊的自定義註解失效的解決
調用公共模塊的自定義註解失效
項目結構如下
我在 bi-common 公共模塊裡定義瞭一個自定義註解,實現AOP記錄日志,bi-batch 項目已引用瞭 bi-common ,當在 bi-batch 使用註解的時候,沒有報錯,但是切面卻失效。
自定義註解:
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface JobLog { }
切面實現:
/** * 執行任務時記錄日志 */ @Aspect @Component @Order(1) @Slf4j public class JobLogAspect { @Pointcut("@annotation(aoshu.bi.platform.common.annotation.JobLog)") public void pointcut() { } @Before("pointcut()") public void logStart(JoinPoint joinPoint) { log.info("開始執行" + joinPoint.getSignature().getName() + "任務,參數為:" + Arrays.toString(joinPoint.getArgs())); } @After("pointcut()") public void logEnd(JoinPoint joinPoint){ log.info(""+joinPoint.getSignature().getName()+"方法運行後。。。@After"); } }
註解使用:
/** * 這裡使用瞭自定義註解,卻失效,但是沒報錯 */ @JobLog public Job createEsJob(String jobName) { return jobBuilderFactory.get(jobName) .start(esLogJobStep.step()) .build(); }
解決方法
原因:
其他工程沒有掃描公共模塊的包,沒有掃描到註解的位置。
解決方法1:
在啟動類加上公共模塊的包路徑,註意別忘記把原項目的包路徑也加上
@SpringBootApplication(scanBasePackages = { "aoshu.bi.platform.batch", "aoshu.bi.platform.common" })
解決方法2:
在配置類裡導入該切面實現
@Import({ aoshu.bi.platform.common.aspect.JobLogAspect.class }) @Configuration public class BatchConfigure { }
SpringBoot註解不生效,踩坑
子模塊的項目,註解都不生效,包括@RestController @EnableScheduling @Scheduled等;
解決方法
在子項目右鍵,clean install,會發現報錯瞭,解決完問題以後就可以瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot AOP @Pointcut切入點表達式排除某些類方式
- SpringBoot@Aspect 打印訪問請求和返回數據方式
- SpringAop日志找不到方法的處理
- 基於springboot實現一個簡單的aop實例
- Spring AOP中三種增強方式的示例詳解