1. 程式人生 > >Java框架學習_Spring(四)Spring_AOP相關術語、AOP_xml的配置和簡單測試(涉及junit和aop整合進階)

Java框架學習_Spring(四)Spring_AOP相關術語、AOP_xml的配置和簡單測試(涉及junit和aop整合進階)

面向切面程式設計的感覺就是:以前程式是由上往下執行的,如果我需要新增一個什麼功能,就需要去改程式碼,但是我用AOP的動態代理,就像膠帶一樣,往上面一貼就行了,不要用的時候再撕下來,是橫向的,後面會有很多膠帶的型別(就是下面的Advice通知),往上貼,往下帖,環繞貼,遇到異常貼等等,就很方便


1、AOP相關術語:
在這裡插入圖片描述

2、AOP的配置和簡單測試:
這裡先用xml配置的方式,後面再說註解的方法

  1. 導包 :Spring_AOP開發jar包
  2. 配置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 definitions here --> <!-- 需要被代理的物件 --> <bean id="AopDemo" class="cn.nupt.aopDemo.AopDemo"></bean> <!-- 切面類 --> <bean id="AopInsert" class="cn.nupt.aopClass.AopInsert"></bean> <aop:config> <!-- 配置哪些類的哪些方法需要進行增強,這裡是AopDemo下面的hehe方法 -->
<aop:pointcut expression="execution(* cn.nupt.aopDemo.AopDemo.hehe(..))" id="hehe" /> <!-- 配置切面 --> <aop:aspect ref="AopInsert"> <!-- 在hehe方法前面設定我們切面類的check方法 --> <aop:before method="check" pointcut-ref="hehe" /> </aop:aspect> </aop:config> </beans>
  1. 編寫執行類(就是要被代理/增強的類)
package cn.nupt.aopDemo;

public class AopDemo {
	
	public void haha() {
		System.out.println("haha");
	}
	
	public void hehe() {
		System.out.println("hehe");
	}
	
	public void xixi() {
		System.out.println("xixi");
	}

}

  1. 編寫切面類
package cn.nupt.aopClass;

//編寫切面類
public class AopInsert {
	
	public void check() {
		System.out.println("許可權校驗中。。。");
	}

}

  1. 編寫測試類,這裡用到了junit和AOP的整合
package cn.nupt.test;

import javax.annotation.Resource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import cn.nupt.aopDemo.AopDemo;
//junit和aop整合
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AopTest {
	@Resource(name="AopDemo")
	private AopDemo aopDemo;
	
	@Test
	public void test() {
		
		aopDemo.haha();//輸出haha
		aopDemo.hehe();//輸出hehe
		aopDemo.xixi();//輸出xixi
	}

}
輸出:
	haha
	許可權校驗中。。。
	hehe
	xixi