使用示例
@Secret
@PostMapping("upload")
public JSONObject upload(@RequestBody JSONObject params){
JSONObject upload = upload(params);
return upload;
}
POM文件
<!-- AOP切面依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
自定义注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Secret {
}
切面方法
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
@Aspect
@Component
@Slf4j
public class SecretAOP {
@Value("${security.enable}")
private String securityEnable;
@Resource
private AppInfoDao appInfoDao;
@Pointcut("@annotation(com.face.annotation.Secret)")
public void pointcut(){}
@Around("pointcut()")
public JSONObject around(ProceedingJoinPoint point){
WrapperResponse result = new WrapperResponse();
Object[] args = point.getArgs();
Object proceed = point.proceed(args);
return proceed ;
}
}