简单aop示例

//MyBean.java


package test.aop;

public class MyBean {

	private String name;

	public String getName() {
		return name;
	}

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

//MyMethodBeforeAdvice.java


package test.aop;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class MyMethodBeforeAdvice implements MethodBeforeAdvice {

	@Override
	public void before(Method method, Object[] args, Object target) throws Throwable {
		System.out.println( "调用了 "+target +"的 "+method.getName()+"方法,参数为:");
		int i=0;
		for (Object object : args) {
			System.out.println( (++i)+ "个:"+ object.toString());
		}
	}

}

//Test.java

package test.aop;

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

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx=new ClassPathXmlApplicationContext("classpath:test/aop/aop.xml");
		MyBean mb=(MyBean) ctx.getBean("MyBeanService");
		mb.setName("abc");
		mb.getName();
		mb.getClass();
		System.out.println("done");
	}

}


////////////////////////////////////配置////////////////////////////////////////////
<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean id="MyBean" class="test.aop.MyBean"></bean>
	<bean id="MyAdvice" class="test.aop.MyMethodBeforeAdvice"></bean>
	<bean id="MyBeanService" class="org.springframework.aop.framework.ProxyFactoryBean">
		<!-- 注入目标对象 -->
		<property name="target" ref="MyBean"></property>
		<!-- 注入Advice/Interceptor -->
		<property name="interceptorNames">
			<list>
				<value>MyAdvice</value>
			</list>
		</property>
	</bean>

</beans>
posted @ 2011-04-09 19:57  庚武  Views(331)  Comments(0Edit  收藏  举报