本人写了个 spring AOP 小例子,结果却在意料之外,不知哪出了问题,还望指教!

cbthetwo 2008-03-17 04:02:07
接口:
   package cla;

public interface Int {
public void show();
}
 


目标类:
    package cla;

public class Mygoto implements Int {
public void show() {
System.err.println("目标");
}
}


通知类:
 
   package cla;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.framework.ProxyFactoryBean;

public class Advice implements MethodBeforeAdvice {

public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {

System.out.println("先执行我!");
}

}




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 id="advice" class="cla.Advice"></bean>
<bean id="my" class="cla.Mygoto"></bean>
<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>cla.Int</value>
</property>
<property name="interceptorNames">
<list>
<value>advice</value>
</list>
</property>

<property name="target">
<ref bean="my"/>
</property>

</bean>
</beans>




测试类:
    package cla;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class Maintest {

public static void main(String[] args) {
ApplicationContext context=new FileSystemXmlApplicationContext("applicationContext.xml");
Int my= (Int)context.getBean("my");
my.show();

}

}



输出结果:
log4j:WARN No appenders could be found for logger (org.springframework.core.CollectionFactory).
log4j:WARN Please initialize the log4j system properly.
目标



应该在输出"目标"  前会输出"先执行我!", 可是却没有!

 
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
TYLEO 2008-03-19
  • 打赏
  • 举报
回复
不用谢,互相帮忙嘛
cbthetwo 2008-03-19
  • 打赏
  • 举报
回复
   问题 就出在这里! 
      
         呵呵!  
           非常感谢,  愿你平安幸福!  
TYLEO 2008-03-18
  • 打赏
  • 举报
回复
Int my= (Int)context.getBean("my");
改成

Int my= (Int)context.getBean("proxy");
cbthetwo 2008-03-18
  • 打赏
  • 举报
回复
 3楼的,
不会把, 这跟名字应该没关系把!
thursdaynight 2008-03-18
  • 打赏
  • 举报
回复
貌似没有什么错误,你把配置文件里那个名字advice换成before试试吧
cbthetwo 2008-03-17
  • 打赏
  • 举报
回复
 那句代码就是用来获得 spring 上下文!
fulianglove 2008-03-17
  • 打赏
  • 举报
回复
ApplicationContext context=new FileSystemXmlApplicationContext("applicationContext.xml");
这有什么用?......
spring是用于web开发的框架,你得加载applicationcontext.xml配置文件,具体去网上找找

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧