AOP
之前写spring知识点时写到aop,讲了一下大概的用途,工作时项目中使用切面编程的地方也都不是我负责的,感觉学的都快忘啦,哈哈哈哈。在网上也没找到很具体的实现方法,写的小demo来具体实现一下吧。
Aop的是实现是基于spring动态代理技术的,生成代理对象,代理对象执行时进行增强功能的介入,再去调入目标对象的方法,从而实现增强功能。常用的代理对象技术的话有JDK动态代理(基于接口)和cglib动态代理(基于父类)。切面编程的话除了spring自带的aop还有AspectJ,但现在spring已经继承了AspectJ。
aop中需要有目标对象,我这边是基于接口的,包括接口和实现类。
package com.yyh.aop;
public interface TargetInterface {
public void cutMe();
}
package com.yyh.aop;
public class Target implements TargetInterface {
public void cutMe() {
System.out.println("target 执行");
}
}
切面对象
package com.yyh.aop;
public class MyAspect {
//前置增强方法
public void before(){
System.out.println("前置代码增强.....");
}
}
spring配置xml用来创建对象,配置切点及通知
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--创建目标对象-->
<bean id="Tatget" class="com.yyh.aop.Target"></bean>
<!--创建切面对象-->
<bean id="MyAspet" class="com.yyh.aop.MyAspect">