`
xinyu_yang77
  • 浏览: 13541 次
  • 来自: SH
社区版块
存档分类
最新评论

Spring AOP Step-by-step(1)

阅读更多

: 概念

Aspect,常译为“方面”,是对施加于不同Class实例的相同问题域的抽象。<o:p></o:p>

: 参与者<o:p></o:p>

(1) Pointcut: ”方面”的切点--用来决定是否执行Advice的谓词

(2) Advice: 方面的处理<o:p></o:p>

(3) Advisor: PointcutAdvice的粘合剂<o:p></o:p>

三:Step-by-step

1 Bean: IShape, Rectange, Circle(代码忽略)

   IShape.java:IShape接口

  1. package com.rainsoft.exercise1.aop;   
  2.   
  3. /**  
  4.  * Interface for shapes like "circle", "rectange" etc.  
  5.  * @author RainS.Yang  
  6.  * @version 1.0  
  7.  */  
  8. public interface IShape {   
  9.     void draw();   
  10. }  
<o:p>
Rectange.java:IShape的一个实现
  1. package com.rainsoft.exercise1.aop;   
  2.   
  3. /**  
  4.  * @author RainS.Yang  
  5.  * @version 1.0  
  6.  */  
  7. public class Rectange implements IShape {   
  8.     public void draw() {   
  9.         System.out.println("Rectange is drawn.");   
  10.     }   
  11. }  

Note:

(1) SpringAOP Framework缺省通过Dynamic Proxy实现,所以要定义接口;而且接口编程被强烈建议

2 Advice:以MethodBeforeAdvice为例

    TimestampMethodBeforeAdvice.java

  1. package com.rainsoft.exercise1.aop;   
  2.   
  3. import java.lang.reflect.Method;   
  4. import java.text.SimpleDateFormat;   
  5. import java.util.Date;   
  6.   
  7. import org.springframework.aop.MethodBeforeAdvice;   
  8.   
  9. /**  
  10.  * Print timestamp to stdout when enter specified methods(pointcuts)  
  11.  *   
  12.  * @author RainS.Yang  
  13.  * @version 1.0  
  14.  */  
  15. public class TimestampMethodBeforeAdvice implements MethodBeforeAdvice {   
  16.     SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");   
  17.   
  18.     public void before(Method method, Object[] args, Object target)   
  19.             throws Throwable {   
  20.         System.out.println(df.format(new Date()) + ":entering method - "    
  21.                 + method.getName());   
  22.     }   
  23. }   

Note:

(1) Spring AOP Frame内置5种Advice,所有Advice都从org.aopalliance.aop.Advice继承来

 

</o:p>  Spring AOP Frmaework支持的Advice
Before advice

org.springframework.aop.BeforeAdvice;

org.springframework.aop.MethodBeforeAdvice

After returning advice org.springframework.aop.AfterReturningAdvice
After throwing advice org.springframework.aop.ThrowsAdvice
After (finally) advice ?
Aroud advice ?

3 Config:

spring-aop-demo.xml
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <!---->>  
  3. <beans>    
  4.   <!---->    
  5.   <bean id="rect" class="org.springframework.aop.framework.ProxyFactoryBean">    
  6.     <property name="proxyInterfaces">    
  7.       <value>com.rainsoft.exercise1.aop.IShapevalue>    
  8.     property>    
  9.     <property name="target">    
  10.       <ref local="rectTarget"/>    
  11.     property>    
  12.     <property name="interceptorNames">    
  13.       <list>    
  14.         <value>timestampAdvisorvalue>    
  15.       list>    
  16.     property>    
  17.   bean>  
  18.      
  19.   <!---->  
  20.   <bean id="rectTarget" class="com.rainsoft.exercise1.aop.Rectange">bean>  
  21.   
  22.   <!---->    
  23.   <bean id="timestampAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">    
  24.     <property name="advice">    
  25.       <ref local="timestampAdvice"/>    
  26.     property>    
  27.     <property name="pattern">    
  28.       <value>com\.rainsoft\.exercise1\.aop\.IShape\.drawvalue>    
  29.     property>    
  30.   bean>  
  31.      
  32.   <!---->    
  33.   <bean id="timestampAdvice" class="com.rainsoft.exercise1.aop.TimestampMethodBeforeAdvice"/>      
  34. beans>  

4 主程序

Main.java
  1. package com.rainsoft.exercise1.aop;   
  2.   
  3. import org.springframework.context.ApplicationContext;    
  4. import org.springframework.context.support.FileSystemXmlApplicationContext;   
  5.   
  6. /**  
  7.  * Demo how to use Spring AOP  
  8.  * @author RainS.Yang  
  9.  * @version 1.0  
  10.  */  
  11. public class Main {   
  12.     public static void main(String[] args) {   
  13.         try {   
  14.             ApplicationContext ctx = new FileSystemXmlApplicationContext("spring-aop-demo.xml");   
  15.             IShape shape = (IShape)ctx.getBean("rect");   
  16.             shape.draw();   
  17.         }   
  18.         catch (Exception ex) {   
  19.             ex.printStackTrace();   
  20.         }   
  21.     }   
  22. }   

5 运行结果

  1. 2006-12-05 01/32/03:entering method - draw   
  2. Rectange is drawn.  
分享到:
评论

相关推荐

    tiny-spring-step-6-invite-application-context.zip

    ApplicationContext是Spring提供的高级IoC容器,它是BeanFactory的子接口,提供了更多的企业级服务,如消息资源、AOP代理、事件发布等。相比于更基础的BeanFactory,ApplicationContext具有以下优势: 1. 国际化...

    spring-mvc-step-by-step中文版

    ### Spring MVC Step-by-Step中文版知识点概览 #### 一、Spring框架核心概念与组成部分 **1. 控制反转(IoC)** - **定义**:控制反转是一种编程模式,通过它对象的依赖关系是由外部容器进行管理而不是由对象本身...

    spring mvc step by step,例子

    通过这个"spring mvc step by step"的例子,我们可以深入学习Spring MVC的每一个组件,理解它们如何协同工作,以及如何在实际项目中运用。这个例子会提供一个基础的Spring MVC应用,包括Controller的创建、视图的...

    简单Spring框架模拟器--Demo

    首先,我们从“tiny-spring-step-1-container-register-and-get.zip”开始,这是Spring容器的基础。这个步骤讲解了如何注册Bean并从容器中获取,这是Spring框架的核心功能之一。在这里,你会了解到BeanFactory是如何...

    spring-mvc-step-by-step.pdf

    - **拦截器与AOP**:探索Spring的拦截器机制以及面向切面编程(AOP)在Spring MVC中的应用。 - **异常处理**:如何优雅地处理应用运行时可能出现的异常。 - **国际化与本地化**:支持多语言环境的实现方法。 - **...

    Spring-MVC-step-by-step2.rar

    《Spring MVC 深入浅出教程》 Spring MVC 是 Spring 框架的一个核心模块,主要用于构建...这个教程“Spring-MVC-step-by-step2.pdf”将引导你一步步掌握 Spring MVC 的核心概念和实战技巧,为你的 IT 事业添砖加瓦。

    tiny-spring-step-4-config-beanfactory-with-xml.zip

    《Spring框架中的IOC容器与XML配置详解》 在软件开发领域,Spring框架以其强大的依赖注入(Dependency ...在后续的学习中,进一步探索Spring的AOP、事务管理等功能,将有助于提升你的开发技能和项目实施能力。

    自己写spring框架.zip

    首先,我们从"tiny-spring-step-1-container-register-and-get.zip"开始,这是构建Spring容器的第一步,主要讲解如何注册Bean以及获取Bean。在这个阶段,你会了解到如何将Bean定义为XML配置,并用容器来管理这些Bean...

    spring练习 step by step

    总的来说,"spring练习 step by step "将带领我们深入学习Spring框架和Spring Cloud Alibaba的使用,从基础概念到实际操作,逐步掌握微服务开发的关键技术和最佳实践。通过这个过程,我们可以提升自己的Java开发技能...

    Developing a Spring Framework MVC application step-by-step

    1. **创建项目结构**:一个标准的Spring MVC项目通常包含`src/main/java`(源代码)、`src/main/resources`(配置文件)、`src/main/webapp`(Web应用资源)等目录。 2. **配置pom.xml**:如果你使用的是Maven,...

    Spring從入門到精通

    《Spring从入门到精通》是一套全面且深入的Spring学习资料集合...在实践过程中,读者可以结合"Spring MVC step-by-step.files"中的实例代码进行操作,加深理论知识与实际应用的结合,从而真正达到从入门到精通的目标。

    spring-batch.jar

    Spring Batch 可以无缝集成到Spring应用中,利用Spring的依赖注入、AOP和其他特性。同时,它也可以与其他Spring项目如Spring Data、Spring Integration协同工作,构建更复杂的解决方案。 9. **最佳实践** - 使用...

    step by step ssh 04 Spring 事务控制

    在"step by step ssh 04 Spring 事务控制"这一主题中,我们将深入探讨如何在SSH架构下实现Spring的AOP(面向切面编程)事务管理,以及如何结合Struts和Hibernate进行用户登录实例。 首先,Struts作为MVC(模型-视图...

    tiny-spring-practice:实践tiny-spring,手写Spring两大核心功能:IOC和AOP

    一起来学tiny-spring 目录 step9-用Annotation方式来实现运行时注入bean 【Spring之AOP功能】 ...git checkout Spring-IOC-1 就两个类: BeanDefinition:用于保存bean对象以及其他额外的信息。 BeanFactory:维护一

    SourceCode of SpringFramework MCV step by step

    在"SourceCode of SpringFramework MVC step by step"中,我们有机会深入了解Spring MVC这一模块,它是Spring Framework用于构建Web应用程序的一部分。 Spring MVC是Model-View-Controller架构模式的一种实现,帮助...

    Spring Recipes: A Problem-Solution Approach, Second Edition

    This book guides you step by step through topics using complete and real-world code examples. Instead of abstract descriptions on complex concepts, you will find live examples in this book. When you ...

    Spring入门十大问题

    - **MVC-step-by-step sample**:一个逐步介绍Spring MVC实现过程的示例项目,适合初学者跟随学习。 - **AppFuse**:一个基于Spring、Hibernate、Struts等技术的开源项目模板,提供了一种快速搭建Web应用的方法。 ...

    spring资料汇总

    "Spring-MVC-step-by-step.pdf" 提供了Spring MVC的逐步学习教程,从创建第一个Spring MVC项目开始,到控制器定义、视图解析、模型数据绑定,再到异常处理和国际化支持,详尽地展示了Spring MVC在实际开发中的应用...

    1000行代码读懂Spring核心

    #### step-1:容器注册和获取 首先实现了基本的容器功能,包括Bean的注册和获取。这个步骤涉及到了BeanDefinition类,它用于保存Bean及其配置信息,以及BeanFactory类,负责管理Bean的生命周期。 #### step-2:...

Global site tag (gtag.js) - Google Analytics