SpringAOP入門例子-通過XML進行配置

話不多說,通過代碼我們梳理了一下AOP的相關知識點(觀衆看話劇)

一:定義觀衆類(我們當做一個切面)可以這樣理解,我們把這個類切成一塊一塊的,向壘積木一樣,我們爲核心業務服務

package com.ccut.model;

public class Audience {

	public void takeSeat() {
		System.out.println("The audiences take seat.");
	}

	public void turnOffPhone() {
		System.out.println("The audiences turn off the phone.");
	}

	public void applaud() {
		System.out.println("鼓掌...");
	}

	public void unHappy() {
		System.out.println("The audiences are unhappy...");
	}
}

二:定義切點類 ,DukePerformer類裏面有一個方法,表演,

package com.ccut.model;

public class DukePerformer {

	private String name;
	public void setName(String name)
	{
		this.name=name;
	}
	public String getName()
	{
		return this.name;
	}

	public void perform() {
		System.out.println(this.name+" 唱歌啦.");
	}
}

三:在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"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
   http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   http://www.springframework.org/schema/aop 
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
   http://www.springframework.org/schema/tx 
   http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
   http://www.springframework.org/schema/context      
   http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	<!-- AOP學習時的配置 演員 -->
	<bean id="DukePerformer" class="com.ccut.model.DukePerformer">
		<property name="name" value="小飛飛" />
	</bean>
	<!--觀衆 -->
	<bean id="audience" class="com.ccut.model.Audience" />
	
	<aop:config>
	<!--配置切點 也就是我們常說的核心業務-->
    <aop:pointcut id="performCutPoint" expression="execution(* *.perform(..))" />
	
		<!--aop:aspect是配置切面,也就是周變業務,我們將非業務方法切成類似一塊塊的 ,在切面前或者後執行 -->
		<aop:aspect ref="audience">
		     <!-- 在主業務之間直線 -->
			<aop:before method="takeSeat" pointcut-ref="performCutPoint" />
			<aop:before method="turnOffPhone" pointcut-ref="performCutPoint" />
			<!-- 成功返回之後的通知 -->
			<aop:after-returning method="applaud" pointcut-ref="performCutPoint" />
			<!--定義拋出異常後的通知  -->
			<aop:after-throwing method="unHappy" pointcut-ref="performCutPoint" />
		</aop:aspect>
	</aop:config>
</beans>

四:主方法

package com.ccut.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.ccut.model.DukePerformer;
public class Main {

	public static void main(String[] args)
	{
//		ApplicationContext ctx=new FileSystemXmlApplicationContext("src/com/XinXiangShop/AOP/applicationContext.xml");
		ApplicationContext ctx=new ClassPathXmlApplicationContext("applilcationContext.xml");
		DukePerformer per=(DukePerformer)ctx.getBean("DukePerformer");
		per.perform();
	}
}

五:截圖


源代碼下載:(如果有哥們報錯,看下代碼比較下)



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