大家帮我看看为什么方法没有被拦截啊,麻烦大家了~~
“aaaaa”能打印出来,但是“看这里”打印不出来package com.test.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;public class AdNodeAOP implements AfterReturningAdvice { public AdNodeAOP() {
} public void afterReturning(Object returnValue, Method method, Object[] args,
Object targetClass) throws Throwable {
String methodName = method.getName();
System.out.println("看这里!"+methodName);
return;
}}
package com.test.manager;public interface AdNodeManager {
public abstract void addRootNode(String name);
}package com.test.manager.impl;
public void addRootNode(String name){
System.out.println("aaaaaaa");
}<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="adNodeAOP" class="com.test.aop.AdNodeAOP"/>
<bean id="adNodeAfterReturning" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref bean="adNodeAOP"/>
</property>
<property name="patterns">
<value>
com\.test\.manager\.AdNodeManager\.addRootNode
</value>
</property>
</bean>
<bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>AdNodeManagerImpl</value>
</property>
<property name="interceptorNames">
<list>
<value>adNodeAfterReturning</value>
</list>
</property>
</bean>
</beans>
“aaaaa”能打印出来,但是“看这里”打印不出来package com.test.aop;import java.lang.reflect.Method;import org.springframework.aop.AfterReturningAdvice;public class AdNodeAOP implements AfterReturningAdvice { public AdNodeAOP() {
} public void afterReturning(Object returnValue, Method method, Object[] args,
Object targetClass) throws Throwable {
String methodName = method.getName();
System.out.println("看这里!"+methodName);
return;
}}
package com.test.manager;public interface AdNodeManager {
public abstract void addRootNode(String name);
}package com.test.manager.impl;
public void addRootNode(String name){
System.out.println("aaaaaaa");
}<?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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="adNodeAOP" class="com.test.aop.AdNodeAOP"/>
<bean id="adNodeAfterReturning" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref bean="adNodeAOP"/>
</property>
<property name="patterns">
<value>
com\.test\.manager\.AdNodeManager\.addRootNode
</value>
</property>
</bean>
<bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<value>AdNodeManagerImpl</value>
</property>
<property name="interceptorNames">
<list>
<value>adNodeAfterReturning</value>
</list>
</property>
</bean>
</beans>
解决方案 »
- javaee学习请大家指导指导
- webservice自定义返回类型,求wsdl和xsd文件。。。。。。。。。。。。。。。。。。。。。
- 求助,tomcat内存溢出
- oracle数据库BOLB数据转换String异常
- 在TOMCAT上跑没有问题,但是在OC4J上不行!不能一次给200分,解决后开贴再送!
- WEB SERVICE里面QName,SOAPAction是什么意思?
- JDIC java.lang.UnsatisfiedLinkError: Can't load library: D:\workspace\SimpleBrow
- JAVA Mule ESB 如何?
- javamail使用代理服务器发邮件的问题
- ####一个J2EE功能分布问题,请高手指点#####
- 字符替换奇怪的$问题,大家都来看看,到底为啥?
- jsp里如何获取text中的值
AdNodeManagerImpl没有定义
public class AdNodeManagerImpl implements AdNodeManager {
public void addRootNode(String name){
System.out.println("aaaaaaa");
}
}
com\.test\.manager\.AdNodeManager\.addRootNode
</value>
这个先改为
<value>
addRootNode
</value>
看看
麻烦吧你的spring配置文件贴全
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${jdbc.driverClassName}</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<bean id="AdNodeManagerImpl" class="com.founder.ad.manager.impl.AdNodeManagerImpl">
<property name="dataSource" ref="dataSource"></property>
</bean>
改成那个还是不行
<bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="beanNames">
<value>AdNodeManagerImpl</value>
</property>
<property name="interceptorNames">
<list>
<value>adNodeAfterReturning</value>
</list>
</property>
</bean>
public class AdNodeManagerImpl {
public void addRootNode(String name){
System.out.println("aaaaaaa");
}
}
config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <!--使用依赖注入完成变量值设定-->
<bean id="HelloWorld" class="com.gc.beanproxy.TestHelloWorld"
depends-on="date"> <!-- <property name="msg">
<value>HelloWorld</value>
</property>
<property name="date">
<ref bean="date"/>
</property>--> </bean> <bean id="date" class="java.util.Date" /> <!--以下是使用Spring AOP实现日志输出的Bean-->
<bean id="log" class="com.gc.beanproxy.LogAround" /> <bean id="logAdvisor"
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref bean="log" />
</property>
<!--只对doAuditing()方法有效-->
<property name="patterns">
<value>.*doAuditing.*</value>
</property>
</bean> <bean id="timeBook" class="com.gc.beanproxy.TimeBook" /> <!--使用Spring提供的ProxyFactoryBean来实现代理-->
<bean id="beanNameAutoProxyCreator"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- <property name="proxyTargetClass">
<value>true</value>
</property> -->
<property name="beanNames">
<value>timeBook</value>
</property>
<property name="interceptorNames">
<list>
<value>logAdvisor</value>
</list>
</property>
</bean>
</beans>
--通知定义
package com.gc.beanproxy;import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;/**
* aop方式ProxyFactoryBean代理
* @author warison
*
* Oct 20, 2009
*/
public class LogAround implements MethodInterceptor {
private Logger logger = Logger.getLogger(this.getClass().getName());
@Override
public Object invoke(MethodInvocation mi) throws Throwable {
// TODO Auto-generated method stub
logger.log(Level.INFO, mi.getArguments()[0] + " 审核数据开始....");
try {
Object result = mi.proceed(); //返回值即是被调用的方法的返回值 return result; } finally { logger.log(Level.INFO, mi.getArguments()[0] + " 审核数据结束...."); } }
}
测试程序:package com.gc.beanproxy;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;public class TestHelloWorld {
public static void main(String[ ] args) { //通过ApplicationContext获取XML ApplicationContext actx=new ClassPathXmlApplicationContext("com/gc/beanproxy/config.xml");
// ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
TimeBookInterface timeBookProxy = (TimeBookInterface)actx.getBean("timeBook");
timeBookProxy.doAuditing("张三审核数据");
timeBookProxy.updateAudit("李四修改数据");
}
}
--接口package com.gc.beanproxy;import org.apache.log4j.Level;//针对接口编程public interface TimeBookInterface { public void doAuditing(String name);
public void updateAudit(String name) ;
}--实现类
package com.gc.beanproxy;public class TimeBook implements TimeBookInterface { public void doAuditing(String name) {
//审核数据的相关程序
System.out.println("==aop审核数据的相关程序==");
}
public void updateAudit(String name) {
//审核数据的相关程序
System.out.println("==aop修改数据的相关程序==");
}
}
.doAuditing("张三审核数据");
没看出来吗?
打印的结果结贴,给分