基於spring實現aop

前面省略導包的過程。
項目開始先創建一個接口類

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();
    }
}

結果爲:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章