SpringBoot調(diào)用公共模塊的自定義注解失效的解決
調(diào)用公共模塊的自定義注解失效
項(xiàng)目結(jié)構(gòu)如下

我在 bi-common 公共模塊里定義了一個(gè)自定義注解,實(shí)現(xiàn)AOP記錄日志,bi-batch 項(xiàng)目已引用了 bi-common ,當(dāng)在 bi-batch 使用注解的時(shí)候,沒(méi)有報(bào)錯(cuò),但是切面卻失效。
自定義注解:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface JobLog {
}
切面實(shí)現(xiàn):
/**
* 執(zhí)行任務(wù)時(shí)記錄日志
*/
@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("開(kāi)始執(zhí)行" + joinPoint.getSignature().getName() + "任務(wù),參數(shù)為:" + Arrays.toString(joinPoint.getArgs()));
}
@After("pointcut()")
public void logEnd(JoinPoint joinPoint){
log.info(""+joinPoint.getSignature().getName()+"方法運(yùn)行后。。。@After");
}
}
注解使用:
/**
* 這里使用了自定義注解,卻失效,但是沒(méi)報(bào)錯(cuò)
*/
@JobLog
public Job createEsJob(String jobName) {
return jobBuilderFactory.get(jobName)
.start(esLogJobStep.step())
.build();
}
解決方法
原因:
其他工程沒(méi)有掃描公共模塊的包,沒(méi)有掃描到注解的位置。
解決方法1:
在啟動(dòng)類加上公共模塊的包路徑,注意別忘記把原項(xiàng)目的包路徑也加上
@SpringBootApplication(scanBasePackages = {
"aoshu.bi.platform.batch",
"aoshu.bi.platform.common"
})
解決方法2:
在配置類里導(dǎo)入該切面實(shí)現(xiàn)
@Import({
aoshu.bi.platform.common.aspect.JobLogAspect.class
})
@Configuration
public class BatchConfigure {
}
SpringBoot注解不生效,踩坑
子模塊的項(xiàng)目,注解都不生效,包括@RestController @EnableScheduling @Scheduled等;
解決方法
在子項(xiàng)目右鍵,clean install,會(huì)發(fā)現(xiàn)報(bào)錯(cuò)了,解決完問(wèn)題以后就可以了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計(jì)模式七大原則之里氏替換原則詳解
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,里氏替換原則(Liskov Substitution principle)是對(duì)子類型的特別定義。本文將為大家詳細(xì)介紹Java設(shè)計(jì)模式七大原則之一的里氏替換原則,需要的可以參考一下2022-02-02
win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效
這篇文章主要介紹了win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
利用線程實(shí)現(xiàn)動(dòng)態(tài)顯示系統(tǒng)時(shí)間
編寫Applet小程序,通過(guò)在HTML文檔中接收參數(shù),顯示當(dāng)前的系統(tǒng)時(shí)間,需要的朋友可以參考下2015-10-10
詳解分別用Kotlin和java寫RecyclerView的示例
本篇文章主要介紹了詳解分別用Kotlin和java寫RecyclerView的示例,詳解分別用Kotlin和java寫RecyclerView的示例2017-12-12

