这个是我的自定义注解类
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface EncryptDb {
}
我的pom 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
我的注解处理器
@Aspect
@Component
public class EncryptionAspect {
@Pointcut("@annotation(com.dxjr.finance.fht.managed.common.annotations.EncryptDb)")
public void encryptDbPointcut() {
}
@Pointcut("@annotation(com.dxjr.finance.fht.managed.common.annotations.DecryptDb)")
public void decryptDbPointcut() {
}
@Around("@annotation(encryptDb) && execution(public void * (String)) ")
public Object encryptDbrypt(ProceedingJoinPoint p, EncryptDb encryptDb) throws Throwable {
Object[] args = p.getArgs();
if (args != null && args.length == 1 && StringUtils.isNotEmpty(String.valueOf(args[0]))) {
return p.proceed(new Object[]{Sm2Utils.encryptDb((String) args[0])});
} else {
return p.proceed();
}
}
@Around("@annotation(decryptDb) && execution(public String * (..))")
public String decryptValue(ProceedingJoinPoint p, DecryptDb decryptDb) throws Throwable {
String encrypted = (String) p.proceed();
return StringUtils.isBlank(encrypted) ? encrypted : Sm2Utils.decryptDb(encrypted);
}
}