https://stackoverflow.com/questions/64814633/spring-aop-aspect-doesnt-work-in-multi-module-projec
遇到一个需求需要把分布在各个模块的接口中返回的某些字段加密, 把切面 @Aspect 定义在了公共模块 common 业务模块 A,B 在 pom 依赖 common 模块, 参照 stackoverflow 的答案在 A,B 模块分别定义了 Config 类 切点使用自定义注解, 在公共模块中的接口(没错。。老代码里公共模块也有对外接口)切面生效了, 但是在 A,B 模块的接口切面一直不生效, 求助
//切面类 @AfterReturning(pointcut = "@annotation(cn.core.annotation.InfoEncrypt)", returning = "response") public void afterReturning(JoinPoint jp, InfoEncryptResponse response) { LoggerEx.info("加密身份证,手机号开始"); try { if (response != null && CollectionUtils.isNotEmpty(response.getInfoEncryptBeans())) { List<? extends InfoEncryptBean> needEncryptBeans = response.getInfoEncryptBeans(); doEncrypt(needEncryptBeans); } } catch (Exception e) { LoggerEx.exception("AspectInfoEncrypt exception", e); } } @Configuration @EnableAspectJAutoProxy(proxyTargetClass = true) @ComponentScan({"cn.module.a"}) public class AspectInfoEncryptConfigA { @Bean public AspectInfoEncrypt aspectInfoEncrypt() { return new AspectInfoEncrypt(); } }
1 mufanzz 361 天前 ![]() 失效的类被加入 spirng bean 了吗,调用的时候通过代理了吗? |
3 yuezk 361 天前 ![]() 确认一下 A, B 模块里面的返回值类型是不是 `InfoEncryptResponse` 或者它的子类 |