一: 概念
Aspect,常译为“方面”,是对施加于不同Class实例的相同问题域的抽象。<o:p></o:p>
二: 参与者<o:p></o:p>
(1) Pointcut: ”方面”的切点--用来决定是否执行Advice的谓词
(2) Advice: 对”方面”的处理<o:p></o:p>
(3) Advisor: Pointcut和Advice的粘合剂<o:p></o:p>
三:Step-by-step
1 Bean: IShape, Rectange, Circle(代码忽略)
IShape.java:IShape接口
- package com.rainsoft.exercise1.aop;
-
-
-
-
-
-
- public interface IShape {
- void draw();
- }
<o:p>
Rectange.java:IShape的一个实现
- package com.rainsoft.exercise1.aop;
-
-
-
-
-
- public class Rectange implements IShape {
- public void draw() {
- System.out.println("Rectange is drawn.");
- }
- }
Note:
(1) SpringAOP Framework缺省通过Dynamic Proxy实现,所以要定义接口;而且接口编程被强烈建议
2 Advice:以MethodBeforeAdvice为例
TimestampMethodBeforeAdvice.java
- package com.rainsoft.exercise1.aop;
-
- import java.lang.reflect.Method;
- import java.text.SimpleDateFormat;
- import java.util.Date;
-
- import org.springframework.aop.MethodBeforeAdvice;
-
-
-
-
-
-
-
- public class TimestampMethodBeforeAdvice implements MethodBeforeAdvice {
- SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");
-
- public void before(Method method, Object[] args, Object target)
- throws Throwable {
- System.out.println(df.format(new Date()) + ":entering method - "
- + method.getName());
- }
- }
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
- <!---->xml version="1.0" encoding="UTF-8"?>
- <!---->>
- <beans>
-
- <bean id="rect" class="org.springframework.aop.framework.ProxyFactoryBean">
- <property name="proxyInterfaces">
- <value>com.rainsoft.exercise1.aop.IShapevalue>
- property>
- <property name="target">
- <ref local="rectTarget"/>
- property>
- <property name="interceptorNames">
- <list>
- <value>timestampAdvisorvalue>
- list>
- property>
- bean>
-
-
- <bean id="rectTarget" class="com.rainsoft.exercise1.aop.Rectange">bean>
-
-
- <bean id="timestampAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
- <property name="advice">
- <ref local="timestampAdvice"/>
- property>
- <property name="pattern">
- <value>com\.rainsoft\.exercise1\.aop\.IShape\.drawvalue>
- property>
- bean>
-
-
- <bean id="timestampAdvice" class="com.rainsoft.exercise1.aop.TimestampMethodBeforeAdvice"/>
- beans>
4 主程序
Main.java
- package com.rainsoft.exercise1.aop;
-
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.FileSystemXmlApplicationContext;
-
-
-
-
-
-
- public class Main {
- public static void main(String[] args) {
- try {
- ApplicationContext ctx = new FileSystemXmlApplicationContext("spring-aop-demo.xml");
- IShape shape = (IShape)ctx.getBean("rect");
- shape.draw();
- }
- catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
5 运行结果
- 2006-12-05 01/32/03:entering method - draw
- Rectange is drawn.
分享到:
相关推荐
ApplicationContext是Spring提供的高级IoC容器,它是BeanFactory的子接口,提供了更多的企业级服务,如消息资源、AOP代理、事件发布等。相比于更基础的BeanFactory,ApplicationContext具有以下优势: 1. 国际化...
### Spring MVC Step-by-Step中文版知识点概览 #### 一、Spring框架核心概念与组成部分 **1. 控制反转(IoC)** - **定义**:控制反转是一种编程模式,通过它对象的依赖关系是由外部容器进行管理而不是由对象本身...
通过这个"spring mvc step by step"的例子,我们可以深入学习Spring MVC的每一个组件,理解它们如何协同工作,以及如何在实际项目中运用。这个例子会提供一个基础的Spring MVC应用,包括Controller的创建、视图的...
首先,我们从“tiny-spring-step-1-container-register-and-get.zip”开始,这是Spring容器的基础。这个步骤讲解了如何注册Bean并从容器中获取,这是Spring框架的核心功能之一。在这里,你会了解到BeanFactory是如何...
- **拦截器与AOP**:探索Spring的拦截器机制以及面向切面编程(AOP)在Spring MVC中的应用。 - **异常处理**:如何优雅地处理应用运行时可能出现的异常。 - **国际化与本地化**:支持多语言环境的实现方法。 - **...
《Spring MVC 深入浅出教程》 Spring MVC 是 Spring 框架的一个核心模块,主要用于构建...这个教程“Spring-MVC-step-by-step2.pdf”将引导你一步步掌握 Spring MVC 的核心概念和实战技巧,为你的 IT 事业添砖加瓦。
《Spring框架中的IOC容器与XML配置详解》 在软件开发领域,Spring框架以其强大的依赖注入(Dependency ...在后续的学习中,进一步探索Spring的AOP、事务管理等功能,将有助于提升你的开发技能和项目实施能力。
首先,我们从"tiny-spring-step-1-container-register-and-get.zip"开始,这是构建Spring容器的第一步,主要讲解如何注册Bean以及获取Bean。在这个阶段,你会了解到如何将Bean定义为XML配置,并用容器来管理这些Bean...
总的来说,"spring练习 step by step "将带领我们深入学习Spring框架和Spring Cloud Alibaba的使用,从基础概念到实际操作,逐步掌握微服务开发的关键技术和最佳实践。通过这个过程,我们可以提升自己的Java开发技能...
1. **创建项目结构**:一个标准的Spring MVC项目通常包含`src/main/java`(源代码)、`src/main/resources`(配置文件)、`src/main/webapp`(Web应用资源)等目录。 2. **配置pom.xml**:如果你使用的是Maven,...
《Spring从入门到精通》是一套全面且深入的Spring学习资料集合...在实践过程中,读者可以结合"Spring MVC step-by-step.files"中的实例代码进行操作,加深理论知识与实际应用的结合,从而真正达到从入门到精通的目标。
Spring Batch 可以无缝集成到Spring应用中,利用Spring的依赖注入、AOP和其他特性。同时,它也可以与其他Spring项目如Spring Data、Spring Integration协同工作,构建更复杂的解决方案。 9. **最佳实践** - 使用...
在"step by step ssh 04 Spring 事务控制"这一主题中,我们将深入探讨如何在SSH架构下实现Spring的AOP(面向切面编程)事务管理,以及如何结合Struts和Hibernate进行用户登录实例。 首先,Struts作为MVC(模型-视图...
一起来学tiny-spring 目录 step9-用Annotation方式来实现运行时注入bean 【Spring之AOP功能】 ...git checkout Spring-IOC-1 就两个类: BeanDefinition:用于保存bean对象以及其他额外的信息。 BeanFactory:维护一
在"SourceCode of SpringFramework MVC step by step"中,我们有机会深入了解Spring MVC这一模块,它是Spring Framework用于构建Web应用程序的一部分。 Spring MVC是Model-View-Controller架构模式的一种实现,帮助...
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 ...
- **MVC-step-by-step sample**:一个逐步介绍Spring MVC实现过程的示例项目,适合初学者跟随学习。 - **AppFuse**:一个基于Spring、Hibernate、Struts等技术的开源项目模板,提供了一种快速搭建Web应用的方法。 ...
"Spring-MVC-step-by-step.pdf" 提供了Spring MVC的逐步学习教程,从创建第一个Spring MVC项目开始,到控制器定义、视图解析、模型数据绑定,再到异常处理和国际化支持,详尽地展示了Spring MVC在实际开发中的应用...
#### step-1:容器注册和获取 首先实现了基本的容器功能,包括Bean的注册和获取。这个步骤涉及到了BeanDefinition类,它用于保存Bean及其配置信息,以及BeanFactory类,负责管理Bean的生命周期。 #### step-2:...