AOP编程即面向切面编程,以下是利用AspectJ实现的几种Aop编程
1.利用标识方法
@Aspect
@Component
public class InterfacePermInterceptor {
private static final Logger LOG = LoggerFactory.getLogger( InterfacePermInterceptor.class );
@Pointcut("execution(public * com.admin.controller.*.*(..))")
private void allController(){}; //切入点的标识方法
@Before("allController()") //此处可以直接用该表达式,也可以使用&&,||,!符号
//pointcut="execution(public * com.admin.controller.*.*(..))"
public void checkAccess(JoinPoint point) throws Exception {
//业务逻辑
}
2.自定义注解方式
(1) 自定义注解
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface InitParam {
}
(2) 定义拦截器
@Component
@Aspect
public class ParamInterceptor {
@Autowired
private DictParamUtil util;
private Log logger = LogFactory.getLog(getClass());
@After("within(com.param.service.impl..*) && @annotation(initParam)")
public void runParamInit(InitParam initParam) {
util.initParam();
}
}
(3)在相应的service上添加注解
@InitParam // 当这个方法执行完成之后,会去调用拦截器中的方法
public int insert(Param param) {
return dao.insert(param);
}
3.AspectJ的官方文档链接
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop