pointcut注解_SpringAOP使⽤指南,详细了解AOP相关注解Spring AOP 指导教程
什么是Spring AOP
spring aop可以在spring构建的系统中使⽤⾯向切⾯编程。当然Spring Boot也是基于Spring构建的。使⽤AOP
可以实现诸如事务,⽇志以及安全校验等通过切⾯统⼀完成的任务。他可以通过简单的注解⽅式实现在⽅法执⾏前后来执⾏你⾃⼰的逻辑。什么是advice, joinpoint和pointcut玉米烫
Joinpoint:程序的执⾏点,如⽅法的执⾏或者异常的处理。
Pointcut:⼀个⽤来匹配joinpoint的断⾔或者表达式。
Advice:与⼀个pointcut关联,并在匹配点运⾏。
advices的类型
Before advice:在join point之前执⾏的advice,不能阻⽌程序的继续运⾏。
个人成就
After returning advice:在join point完成之后执⾏的advice。
After throwing advice:在执⾏的⽅法抛出异常之后执⾏。
公务员考试报名入口>地板防滑处理After advice:在执⾏的join point退出之后执⾏不论正常退出或者抛出了异常。
Around advice:可以在⽅法调⽤之前或之后执⾏⾃定义⾏为,并且还可以选择继续执⾏join point或者执⾏另外的⽅法。
Spring AOP ⽰例
编写Aspectclass然后写相应的执⾏⽅法并在⽅法上写joint-point表达式
⾯向切⾯编程⾸先需要在类上加@Aspect注解表名这是⼀个AOP管理的类,然后在⽅法上加上point-cut表达式⽤来匹配joint-point⽅法。@Aspectpublic class EmployeeCRUDAspect { @Before("execution(* EmployeeById(..))") //point-cut expression public void logBefor 写由切⾯控制的⽅法(joint points)
⾸先将类注⼊到Spring中,之后写正常的⽅法即可。
原宪@Componentpublic class EmployeeManager{ public EmployeeDTO getEmployeeById(Integer employeeId) { System.out.println("Method getEmployeeById 在上⾯的例⼦中,logBeforeV1⽅法会在getEmployeeById⽅法执⾏之前执⾏。将会打印如下⽇志:
古诗登高
EmployeeCRUDAspect.logBeforeV1() : getEmployeeByIdMethod getEmployeeById() called
AOP注解
@Before
在切⾯控制的⽅法之前执⾏。
@Aspectpublic class LoggingAspect { @Before("execution(* com.howtodoinjava.app.rvice.impl.EmployeeManagerImpl.*(..))") public void logBeforeAllM
logBeforeAllMethods⽅法会在EmployeeManagerImpl中所有⽅法执⾏前执⾏。
@After
在切⾯控制的⽅法之后执⾏。
@Aspectpublic class LoggingAspect { @After("execution(* com.howtodoinjava.app.rvice.impl.EmployeeManagerImpl.*(..))") public void logAfterAllMetho @Around
可以在⽅法执⾏前后切⼊。
@Aspectpublic class LoggingAspect { @Around("execution(* com.howtodoinjava.app.rvice.impl.EmployeeManagerImpl.*(..))") public void logAroundAllM @AfterReturning
在⽅法执⾏完成且没有抛出任何异常的情况下。
写人外貌的作文@Aspectpublic class LoggingAspect { @AfterReturning("execution(* com.howtodoinjava.app.rvice.impl.EmployeeManagerImpl.*(..))") public void logAfte
以上⽰例中只⽤到了execution⽅式,还有⼀种使⽤@annotation可以对注解了指定接⼝的⽅法进⾏切⾯编程。这种⽤法在之前的mybatis
多数据源中使⽤过。
护理计划
另外还有很多AOP的注解,如果⼤家感兴趣的话,会继续把剩下的⽤法写完~