全注解式开发AOP

在全注解开发之前,先配置好依赖,参考以下文章,注意这时就不需要配置文件了,只要把依赖复制到pom里就可以了
Spring的AOP基于注解之准备工作(需要添加的依赖以及配置文件)

注解和使用说明
Aop一般有以下常用注解:

@Aspect: 该注解是把此类声明为一个切面类。

@Before: 该注解是声明此方法为前置通知 (目标方法执行之前就会先执行被此注解标注的方法)

@After: 该注解是声明此方法为后置通知 (目标方法执行完之后就会执行被此注解标注的方法)

@AfterReturning: 该注解是声明此方法为返回通知 (目标方法正常执行返回后就会执行被此注解标注的方法)

@AfterThrowing: 该注解是声明此方法为异常通知 (目标方法在执行出现异常时就会执行被此注解标注的方法)

@Around: 该注解是环绕通知是动态的,可以在前后都设置执行

@PointCut: 该注解是声明一个公用的切入点表达式(通知行为的注解的都可以直接拿来复用)

如果是注解式开发还会用到@EnableAspectJAutoProxy: 该注解是声明这个配置类使用注解式的AOP(还有一种古老的方式是在xml文件里声明开启AOP)
需要查看注解的示例详情,小编建议先请看以下文章:
Aop注解演示
什么时候会用到AOP: 写日志,事务等,就是一些不是业务逻辑代码要做的事就交给AOP来完成。

全注解式开发就是编写一个类,在这个类上面使用大量注解来代替spring的配置文件,spring配置文件消失了,如下:

package com.powernode.spring6.service;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Configuration
@ComponentScan("com.powernode.spring6.service")
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class Spring6Configuration {
}

测试程序也变化了:

@Test
public void testAOPWithAllAnnotation(){
    ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Spring6Configuration.class);
    OrderService orderService = applicationContext.getBean("orderService", OrderService.class);
    orderService.generate();
}

你可能感兴趣的:(java,开发语言,Aop,Aop全注解式开发,Spring)