`

Spring 2 AOP编程问题

    博客分类:
  • Java
阅读更多

spring 的aop功能怎么不起作用。

大家帮我看看:

java 代码
  1. /**  
  2.  *   
  3.  */  
  4. package com.dongyun.platform.test;   
  5.   
  6. /**  
  7.  * @author Administrator  
  8.  *  
  9.  */  
  10. public class AppKwikEMart implements KwikEMart {   
  11.   
  12.     /* (non-Javadoc)  
  13.      * @see com.dongyun.platform.test.KwikEMart#buySquishee(com.dongyun.platform.test.Customer)  
  14.      */  
  15.     public Squishee buySquishee(Customer customer) {   
  16.         System.out.println("give you");   
  17.         return new Squishee();   
  18.     }   
  19.   
  20. }  
java 代码
  1. /**  
  2.  *   
  3.  */  
  4. package com.dongyun.platform.test;   
  5.   
  6. import java.lang.reflect.Method;   
  7.   
  8.   
  9. /**  
  10.  * @author Administrator  
  11.  *  
  12.  */  
  13. public class WelcomeAdvice {   
  14.   
  15.     /* (non-Javadoc)  
  16.      * @see org.springframework.aop.MethodBeforeAdvice#before(java.lang.reflect.Method, java.lang.Object[], java.lang.Object)  
  17.      */  
  18.     public void before(Method arg0, Object[] arg1, Object arg2)   
  19.             throws Throwable {   
  20.         System.out.println("Hello "+"!");   
  21.     }   
  22.   
  23. }   

 

applicationContext.xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="   
  7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd   
  9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10.     <aop:aspectj-autoproxy />  
  11.     <bean id="kwikEMartTarget"  
  12.         class="com.dongyun.platform.test.AppKwikEMart">  
  13.     </bean>  
  14.   
  15.     <bean id="welcomeAdvice"  
  16.         class="com.dongyun.platform.test.WelcomeAdvice">  
  17.     </bean>  
  18.   
  19.     <aop:config>  
  20.         <!-- 声明一个切入点。 -->  
  21.         <aop:aspect id="myAspect" ref="welcomeAdvice">  
  22.             <aop:pointcut id="apointcut"  
  23.                 expression="execution(* com.dongyun.platform.test.AppKwikEMart.*(..))" />  
  24.             <aop:before method="before" pointcut-ref="apointcut" />  
  25.         </aop:aspect>  
  26.     </aop:config>  
  27. </beans>  

然后我在main函数里测试怎么不起作用。

java 代码
  1. package com.dongyun.platform.test;   
  2. public class Main {   
  3.     public static void main(String[] args){   
  4.         ClassPathResource resource = new ClassPathResource("applicationContext.xml");   
  5.         BeanFactory factory = new XmlBeanFactory(resource);   
  6. //      AppKwikEMart app = (AppKwikEMart) factory.getBean("kwikEMartTarget");   
  7.         AppKwikEMart app = new AppKwikEMart();   
  8.         Customer cus = new Customer("chxkyy");   
  9.         app.buySquishee(cus);   
  10.         System.out.println("hello world!");   
  11.     }   
  12. }  

出来的结果只是:

give you
hello world!

为什么不打印Hello !呢?


分享到:
评论
7 楼 chxkyy 2008-01-04  
name 写道
也刚碰到这个问题.谢谢啊...但这是什么原因啊?为什么 factory.getBean("myAspect"); 这样写就是可以呢?

KwikEMart app = (KwikEMart) factory.getBean("kwikEMartTarget");

这样写。stone7已经解释清楚。
6 楼 east_java 2008-01-02  
也刚碰到这个问题.谢谢啊...但这是什么原因啊?为什么 factory.getBean("myAspect"); 这样写就是可以呢?
5 楼 chxkyy 2007-12-25  
谢谢,问题解决!
4 楼 stone7 2007-12-21  
1.使用ApplicationContext,而不是BeanFactory
2.使用接口作为getBean返回的引用类型,因为该引用此时是代理。除非你的bean没有实现接口,返回的是子类。

引用
    ApplicationContext factory = new ClassPathXmlApplicationContext("applicationContext.xml");
    KwikEMart app = (KwikEMart) factory.getBean("kwikEMartTarget");
3 楼 地方疙瘩人 2007-12-19  
我也在做这个同样的问题找了半天找到了
main 中的
AppKwikEMart app = (AppKwikEMart) factory.getBean("kwikEMartTarget");   --错了应当是 factory.getBean("myAspect");


2 楼 chxkyy 2007-12-19  
liusong1220 写道
WelcomeAdvice 要 impletments MethodBeforeAdvice
<br/>
我加了也还是不出来:<br/>
<div class='code_title'>java 代码</div>
<div class='dp-highlighter'>
<div class='bar'> </div>
<ol class='dp-j' start='1'>
    <li class='alt'><span><span class='comment'>/**</span> </span></li>
    <li class=''><span><span class='comment'> * </span> </span></li>
    <li class='alt'><span><span class='comment'> */</span><span>  </span></span></li>
    <li class=''><span><span class='keyword'>package</span><span> com.dongyun.platform.test;  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span><span class='keyword'>import</span><span> java.lang.reflect.Method;  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span><span class='keyword'>import</span><span> org.springframework.aop.MethodBeforeAdvice;  </span></span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span><span class='comment'>/**</span> </span></li>
    <li class=''><span><span class='comment'> * @author Administrator</span> </span></li>
    <li class='alt'><span><span class='comment'> *</span> </span></li>
    <li class=''><span><span class='comment'> */</span><span>  </span></span></li>
    <li class='alt'><span><span class='keyword'>public</span><span> </span><span class='keyword'>class</span><span> WelcomeAdvice </span><span class='keyword'>implements</span><span> MethodBeforeAdvice {  </span></span></li>
    <li class=''><span>  </span></li>
    <li class='alt'><span>    <span class='keyword'>public</span><span> </span><span class='keyword'>void</span><span> before(Method arg0, Object[] arg1, Object arg2)  </span></span></li>
    <li class=''><span>            <span class='keyword'>throws</span><span> Throwable {  </span></span></li>
    <li class='alt'><span>        System.out.println(<span class='string'>"Hello !"</span><span>);  </span></span></li>
    <li class=''><span>    }  </span></li>
    <li class='alt'><span>  </span></li>
    <li class=''><span>}  </span></li>
</ol>
</div>
1 楼 liusong1220 2007-12-19  
WelcomeAdvice 要 impletments MethodBeforeAdvice

相关推荐

    小马哥讲 Spring AOP 编程思想 - API 线索图.pdf

    在讨论Spring AOP(面向切面编程)时,首先需要理解几个核心概念。Spring AOP 是Spring框架提供的一个功能模块,它允许开发者将横切关注点(cross-cutting concerns)从业务逻辑中解耦出来,通过在方法调用前后进行...

    使用动态代理演示Spring的AOP编程原理

    为了说明Spring的AOP原理,本人使用代理模式中的动态代理完成演示AOP编程的原理的演示。相信,如果你耐心看完整个程序(几乎一行注释一行代码),那么你对Spring这个东西就不是觉得有什么神秘了! 阅读对象:凡是喜爱...

    spring-aop-jar

    在IT领域,Spring框架是一个广泛使用的Java应用框架,它提供了许多功能,包括依赖注入、面向切面编程(AOP)等。"spring-aop-jar"这个主题涉及到Spring框架中的核心组件之一——Spring AOP。这里我们将深入探讨...

    Spring基础:AOP编程(4)

    在本篇博客“Spring基础:AOP编程(4)”中,我们将深入探讨Spring框架中的面向切面编程(Aspect-Oriented Programming,简称AOP),这是一个强大的功能,它允许我们在不修改原有业务代码的情况下,实现对系统中横切...

    Spring中aop编程所需要的jar包

    为了在Spring中进行AOP编程,我们需要一些特定的JAR包。以下是对这些关键组件的详细说明: 1. **Spring核心包**: - `spring-core.jar`: 这是Spring框架的基础,包含了IoC(Inversion of Control,控制反转)容器...

    Spring AOP面向方面编程原理:AOP概念

    ### Spring AOP面向方面编程原理:AOP概念详解 #### 一、引言 随着软件系统的日益复杂,传统的面向对象编程(OOP)逐渐暴露出难以应对某些横切关注点(cross-cutting concerns)的问题。为了解决这一挑战,面向方面编程...

    Spring-AOP编程.docx

    Spring AOP 编程 Spring AOP(Aspect-Oriented Programming,面向切面编程)是一种编程技术,它可以将横切关注点从核心业务逻辑中分离出来,提高系统的可维护性、可扩展性和灵活性。AOP 是 OOP 的补充和完善,可以...

    编程语言+JAVAspring+AOP编程+面向切面

    编程语言+JAVAspring+AOP编程+面向切面**:这是一个关于JAVAspring编程语言的AOP编程的面向切面的资源,适合有一定JAVAspring基础的开发者。它介绍了JAVAspring的AOP编程的概念、原理和作用,以及如何使用JAVAspring...

    spring-boot aop

    Spring Boot AOP(面向切面编程)是一种强大的设计模式,它允许我们在不修改现有代码的情况下,插入额外的功能或监控代码。在Spring框架中,AOP主要用于日志记录、事务管理、性能统计等场景。本示例是关于如何在...

    Spring 2.5 AOP 例子

    Spring 2.5 AOP(面向切面编程)是Java应用程序中的一个重要概念,它允许开发者在不修改原有代码的情况下插入新的行为或监控。这个例子旨在帮助我们理解和应用Spring框架的AOP特性。以下是对该主题的详细解释: 一...

    spring aop 编程所需要的搜友JAR包

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的核心概念是切面(Aspect)、通知(Advice)、连接点...

    Spring使用AOP的三个jar包

    2. `aspectjweaver.jar`:作为Spring AOP的核心,负责运行时织入,动态修改字节码以实现切面功能。 3. `aopalliance-1.0.0.jar`:作为AOP框架间的桥梁,定义了通用接口,使不同框架的拦截器可以互相协作。 在实际...

    Spring_aop源码

    Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供...

    Spring_AOP_学习小结 Spring_AOP_学习小结 Spring_AOP_学习小结

    Spring AOP,即面向切面编程,是Spring框架的核心组件之一,它允许程序员在不修改原有业务代码的情况下,对程序进行功能增强。...通过学习和实践,你可以更好地在Spring框架中利用AOP解决实际问题。

    设计模式之动态代理与spring的aop编程

    动态代理和Spring AOP(面向切面编程)是两个关键的设计概念,它们在实现高效、模块化的系统中起着至关重要的作用。本文将深入探讨这两个概念,并结合实际应用进行解析。 首先,让我们理解什么是动态代理。动态代理...

    spring编程AOP开发包

    面向切面编程(AOP,Aspect Oriented Programming)是Spring框架的一个核心特性,它提供了一种模块化和声明式的方式来处理程序中的交叉关注点,如日志、事务管理、性能监控等。AOP的主要思想是将这些横切关注点与...

    Spring+AOP全套jar包

    标题“Spring+AOP全套jar包”表明这个压缩包包含了Spring框架的核心库以及支持AOP编程的额外组件。这通常包括Spring Core、Spring Beans、Spring Context、Spring AOP、Spring ORM(对象关系映射)等核心模块的jar...

    spring-aop.jar

    Spring AOP,全称Aspect Oriented Programming(面向切面编程),是Spring框架的核心部分之一,它为Java开发者提供了强大的面向切面的编程能力。本文将围绕spring-aop.jar这个核心组件,详细探讨Spring AOP的原理、...

    spring AOP切面编程

    Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的重要组成部分,它扩展了传统的面向对象编程,使得开发者可以方便地实现横切关注点,如日志、事务管理、性能监控等。在Spring中,AOP通过代理...

    spring-aop-3.2.6.RELEASE.jar ; spring-aop-3.2.6.jar

    spring-aop-3.2.6.RELEASE.jar ; spring-aop-3.2.6.jar spring面向切面编程需要导入的包

Global site tag (gtag.js) - Google Analytics