我是Spring-AOP的新手,并尝试在我的项目中使用它。我创建了一个实现MethodBeforeAdvice
的类:
public class LogBeforeCallAdvice implements MethodBeforeAdvice{
/* (non-Javadoc)
* @see org.springframework.aop.MethodBeforeAdvice#before(java.lang.reflect.Method, java.lang.Object[], java.lang.Object)
*/
@Override
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
System.out.println("**CALLING METHOD - " + arg0.getName() + " IN BEFORE CALLING ADVICE**");
}
}
这些是我的application-context.xml文件的条目:
<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="logMethods"></property>
<property name="interceptorNames">
<list>
<value>beforeCall</value>
</list>
</property>
</bean>
<bean id = "logMethods" class = "com.MyPackage.LogMethods" lazy-init = "true" init-method="init">
<property name = "someProperty" ref = "someBeanReference"/>
</bean>
在我的主要方法中,我得到这样的代理:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
LogMethods logMethods = (LogMethods)context.getBean("proxy");
执行上面的代码后,我没有得到用before()
方法写入之前的日志。但我能够看到LogMethods类及其属性引用bean中提到的sys out。
我想打印LogMethods及其属性bean中所有方法的before advice日志。方法(不使用aspectj注释)。
我也没有收到任何错误。我究竟做错了什么?有人可以帮忙吗?
先谢谢!!