/*
在任意public方法的执行时匹配
*/
@Pointcut("execution (public * * (..)) ")
private void anyPublicOperation(){}
/*
任何以do开头的函数
*/
@Pointcut("execution (* do* (..)) ")
private void anyDoOperation(){}
/*
Package下的任意连接点(方法)执行时匹配
*/
@Pointcut("within (com.pubutech.example.aop.thinking.*)")
private void inPackage(){}
/*
Package下或者子包下的任意连接点(方法)执行时匹配
*/
@Pointcut("within (com.pubutech.example.aop.thinking..*)")
private void inPackages(){}
/*
Package下或者子包下的任意public连接点(任意public方法)执行时匹配
*/
@Pointcut("inPackages() && anyPublicOperation() ")
private void inPackageAnyPublicOPeration(){}
/*
Package下或者子包下的任意public连接点(任意public方法)执行时匹配
理论上 这里想告诉大家 within target args 都没有我们都可以用execution 直接做到
*/
@Pointcut("execution (public * com.pubutech.example.aop.thinking..*.*(..)) ")
private void inPackageAnyPublicOPerationInexecution(){}
/*
Package下或者子包下的任意连接点(方法)执行时匹配
*/
@Pointcut("execution(* com.pubutech.example.aop.thinking..*.*(..))")
public void executioniInPackagesPointCut() {}
/*
Package下的任意连接点(方法)执行时匹配
*/
@Pointcut("execution(* com.pubutech.example.aop.thinking.*.*(..))")
public void executioniInPackagePointCut() {}
/*
实现接口的所有实体对象的所有方法执行
*/
@Pointcut("target (com.pubutech.example.aop.interfacetest.IBussiness)")
public void targetPointCut(){}
/*
接口的所有代理对象的所有方法执行,一般情况下和target一样,高深用法后面演示
*/
@Pointcut("this (com.pubutech.example.aop.interfacetest.IBussiness)")
public void thisPointCut(){}
/*
精确拿到方法执行传递的参数
实际上 args参数我们可以用JAVA反射拿到,所以不用也是可以的,后面Around有案例
*/
@Pointcut("execution(* com.pubutech.example.aop.interfacetest.BusinessImpl.doException(..)) && args(msg)")
public void argsPointCut(Message msg){}
/*
类级别的注解 里面所有的函数执行时
*/
@Pointcut("@within(org.springframework.stereotype.Component)")
public void withinPointCut(){}
/*
函数传递的参数使用的注解对象
RequestBody Controller里面的Mapping方法里面请求参数是JSON格式的注解,帮助大家理解函数参数注解
@PostMapping(value = "/add")
public ObjectResponse add(@RequestBody UserEntity user) {
*/
@Pointcut("@args(org.springframework.web.bind.annotation.RequestBody)")
public void aArgsPointCut(){}
/*
方法的注解所使用的
Transactional 方法事务执行的注解,这边只是一个案例,帮助大家理解一下方法注解
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void addRoleResources(Long roleId, String resourcesId) {
*/
@Pointcut("@annotation(org.springframework.transaction.annotation.Transactional)")
public void annotationPointcut() {
}
/*
Spring 特有的bean操作
*/
@Pointcut("bean(serviceImpl)")
public void beanPointCut(){}
网友评论