2007-12-19

我的第一个 Spring AOP 程序

关键字: Spring AOP
照着书写了第一个Spring AOP
客户买果浆,老板打招呼
Customer类
package AOP.BEAN;

public class Customer {
	String name = null;

	public Customer(String name) {
		super();
		// TODO Auto-generated constructor stub
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

KwikEMart接口
package AOP.INTERFACE;

import AOP.BEAN.Customer;

public interface KwikEMart {
	public void buySquishee(Customer customer);
}

AppKwikEMart实现KwikEMart
package AOP.CLASS;

import AOP.BEAN.Customer;
import AOP.INTERFACE.KwikEMart;

public class AppKwikEMart implements KwikEMart {

	public void buySquishee(Customer customer) {
		// TODO Auto-generated method stub
		System.out.println(customer.getName()+" buy a Squishee");
	}

}

WelcomeAdvice实现MethodBeforeAdvice
package AOP.REFLECT;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

import AOP.BEAN.Customer;

public class WelcomeAdvice implements MethodBeforeAdvice {

	public void before(Method arg0, Object[] arg1, Object arg2)
			throws Throwable {
		// TODO Auto-generated method stub
		System.out.println(arg0);
		System.out.println("Hello "+((Customer)arg1[0]).getName());
	}

}

bean-BuySquishee.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"     
xsi:schemaLocation="http://www.springframework.org/schema/beans     
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">     
   
    <bean id="AppKwikEMart" class="AOP.CLASS.AppKwikEMart"></bean>     
       
    <bean id="WelcomeAdvice" class="AOP.REFLECT.WelcomeAdvice"></bean>     
       
    <bean id="KwikEMart" class="org.springframework.aop.framework.ProxyFactoryBean">     
        <property name="proxyInterfaces" value="AOP.INTERFACE.KwikEMart"/>     
        <property name="target" ref="AppKwikEMart"/>     
        <property name="interceptorNames">     
            <list>     
                <value>WelcomeAdvice</value>     
            </list>     
        </property>     
    </bean>     
</beans>    

main类
package AOP.MAIN;
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.FileSystemXmlApplicationContext;

import AOP.BEAN.Customer;
import AOP.INTERFACE.KwikEMart;
public class buySquishee {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ApplicationContext ctx=new FileSystemXmlApplicationContext("AOP/XML/bean-BuySquishee.xml"); 
		KwikEMart kem = (KwikEMart)ctx.getBean("KwikEMart");
		kem.buySquishee(new Customer("pig"));
	}
}

运行结果
public abstract void AOP.INTERFACE.KwikEMart.buySquishee(AOP.BEAN.Customer)
Hello pig
pig buy a Squishee
评论
发表评论

您还没有登录,请登录后发表评论