论坛首页 Java企业应用论坛

学习笔记:AOP_Cuckoo's Egg(杜鹃的蛋)

浏览 2332 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-05  
代码(转bea)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!-- Bean configuration -->
	<bean id="businesslogicbean"
		class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<value>mypack.IBusinessLogic</value>
		</property>
		<property name="target">
			<ref local="beanTarget" />
		</property>
		<property name="interceptorNames">
			<list>
				<value>theAroundAdvisor</value>
			</list>
		</property>
	</bean>
	<!-- Bean Classes -->
	<bean id="beanTarget" class="mypack.BusinessLogic" />

	<!-- Advisor pointcut definition for around advice -->
	<bean id="theAroundAdvisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<property name="advice">
			<ref local="theAroundAdvice" />
		</property>
		<property name="pattern">
			<value>.*</value>
		</property>
	</bean>

	<!-- Advice classes -->
	<bean id="theAroundAdvice" class="mypack.AroundAdvice" />
</beans>

IBusinessLogic .java
public interface IBusinessLogic {
	public void foo();
}

BusinessLogic .java
public class BusinessLogic implements IBusinessLogic {

	public void foo() {
		System.out.println("Inside QBusinessLogic.foo()");

	}

}

AroundAdvice.java
public class AroundAdvice implements MethodInterceptor {

	public Object invoke(MethodInvocation invocation) throws Throwable {
		System.out.println("Hello world! (by " + this.getClass().getName()
				+ ")");

		//从around通知内调用foo()方法,可以使用proceed()方法,可从invoke(..)方法的MethodInvocation参数中得到它。
		invocation.proceed();
		
//		invocation.getArguments()[0] = new Integer(20);

		System.out.println("Goodbye! (by " + this.getClass().getName() + ")");
		return null;
	}

}

MainApplication.java
public class MainApplication {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		IBusinessLogic testObject = (IBusinessLogic)ctx.getBean("businesslogicbean");
		
		testObject.foo();

	}

}
  • 描述: 顺序图
  • 大小: 14.5 KB
   发表时间:2007-01-05  
说实话,除了Transaction和Security这两个方面, 还比较少看到些超越"Hello, world"的AOP例子, 是我孤陋寡闻,还是很说明问题?

对AOP,我只能???
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics