12.2.6、基于注解的AOP开发
12.2.6.1 快速入门基于注解的aop开发步骤:
①创建目标接口和目标类(内部有切点)
②创建切面类(内部有增强方法)
③将目标类和切面类的对象创建权交给 spring
④在切面类中使用注解配置织入关系
⑤在配置文件中开启组件扫描和 AOP 的自动代理
⑥测试
①创建目标接口和目标类(内部有切点)
代码语言:javascript代码运行次数:0运行复制public interface TargetInterface {
public void method();
}
public class Target implements TargetInterface {
@Override
public void method() {
System.out.println("Target running....");
}
}②创建切面类(内部有增强方法)
代码语言:javascript代码运行次数:0运行复制//切面类
public class MyAspect {
//前置增强方法
public void before(){
System.out.println("前置代码增强.....");
}
}③将目标类和切面类的对象创建权交给 spring
代码语言:javascript代码运行次数:0运行复制//实现目标接口
@Component("target")
public class Target implements TargetInterface {
@Override
public void method() {
System.out.println("Target running....");
}
}
@Component("myAspect")
public class MyAspect {
public void before(){
System.out.println("前置代码增强.....");
}
}④在切面类中使用注解配置织入关系
代码语言:javascript代码运行次数:0运行复制//注解配置切面类,配置织入
@Component("myAspect")
@Aspect
public class MyAspect {
@Before("execution(* com.itheima.aop.*.*(..))") //前置增强
public void before(){
System.out.println("前置代码增强.....");
}
}⑤在配置文件中开启组件扫描和 AOP 的自动代理
代码语言:javascript代码运行次数:0运行复制
代码语言:javascript代码运行次数:0运行复制//测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AopTest {
@Autowired
private TargetInterface target;
@Test
public void test1(){
target.method();
}
}12.2.6.2 注解配置 AOP 详解1) 注解通知的类型通知的配置语法:@通知注解(“切点表达式")
2) 切点表达式的抽取同 xml配置
aop 一样,我们可以将切点表达式抽取。抽取方式是在切面内定义方法,在该方法上使用@Pointcut注解定义切点表达式,然后在在增强注解中进行引用。具体如下:
代码语言:javascript代码运行次数:0运行复制@@Component("myAspect")
@Aspect
public class MyAspect {
@Before("MyAspect.myPoint()")
public void before(){
System.out.println("前置代码增强.....");
}
@Pointcut("execution(* com.itheima.aop.*.*(..))")
public void myPoint(){
}
}12.2.6.3 知识要点注解aop开发步骤①使用@Aspect标注切面类
②使用@通知注解标注通知方法
③在配置文件中配置aop自动代理 aop:aspectj-autoproxy/
通知注解类型12.3.Aop在Spring中的作用提供声明式事务;允许用户自定义切面
横切关注点:跨越应用程序多个模块的方法或功能。即是,与我们业务逻辑无关的,但是我们需要关注的部分,就是横切关注点。如日志,安全,缓存,事务等等…。切面(ASPECT):横切关注点被模块化的特殊对象。即,它是一个类。通知(Advice):切面必须要完成的工作。即,它是类中的一个方法。目标(Target):被通知对象。代理(Poy):向目标对象应用通知之后创建的对象。切入点(PointCut):切面通知执行的"地点"的定义。连接点(JointPoint):与切入点匹配的执行点。SpringAOP中,通过Advice定义横切逻辑,Spring中支持5种类型的Advice: