前面省略导包的过程。
项目开始先创建一个接口类
public interface Use {
void save();
void delete();
}
接着根据这个接口创建一个类作为切入点
public class User implements Use {
@Override
public void save(){
System.out.println("保存");
}
@Override
public void delete(){
System.out.println("删除");
}
}
然后写一下Advice通知,即怎么增强原有的方法
import org.aspectj.lang.ProceedingJoinPoint;
public class Myadvice {
public void before(){ //前置方法
System.out.println("前置");
}
public Object around(ProceedingJoinPoint pjp) throws Throwable{ //环绕方法
System.out.println("环绕前");
Object proceed = pjp.proceed(); //执行切入点的函数
System.out.println("环绕后");
return proceed;
}
}
准备工作都做完了,怎么将它们连接起来呢?这时需要创建一个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 name="use" class="User"> //把对象都注入到spring容器中
</bean>
<bean name="myadvice" class="Myadvice">
</bean>
<aop:config> //将通知织入到切入点中
<aop:pointcut id="us" expression="execution(* User.*(..))"/> //说明哪个类的哪个方法
<aop:aspect ref="myadvice">
<aop:before method="before" pointcut-ref="us" /> //把Myadvice类的before方法放到切入点us中
<aop:around method="around" pointcut-ref="us" /> //同理
</aop:aspect>
</aop:config>
</beans>
最后新建一个类试验一下:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Demo {
public static void main(String args[]){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Use us =(Use)context.getBean("use");
us.save();
}
}
结果为: