前面省略導包的過程。
項目開始先創建一個接口類
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();
}
}
結果爲: