`
56553655
  • 浏览: 204179 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

黄晓童SPRING学习笔记:对AOP的初步理解

阅读更多

Spring的定义
对DI的初步理解
对AOP的初步理解
对DI的深入探究
对AOP的深入探究
Spring的事务管理
Spring MVC

接下来阐述一下我对AOP的理解,还是回到之前那个骑士和寻找圣杯的场景来。现在场景稍有改变,在骑士寻找圣杯的时候,要有一个诗人陪伴他,以朗诵诗歌的形式为他歌功颂德。按照以往的方式,最容易想到的一个方法就是:定义一个诗人的类,里面包含唱歌的方法,然后在骑士类里面有一个诗人类的实例,并在执行任务方法里调用诗人的唱歌方法。代码如下:

public class ShiRen
{
 public void singBefore()
 {
  System.out.println(“sing  before”);
 }
 public void singAfter()
 {
  System.out.println(“sing  after”);
 }
}

 

上面的是新定义的诗人类,下面我们将修改前面的骑士类:

Public  class  QiShi  implement  RenLei
{
 private  RenWu  renWu;
 public void setRenWu (RenWu  renWu )
 {
  this.renwu = renWu ;
 }
 
 private  ShiRen  shiRen;
 public void setShiRen (ShiRen  shiRen )
 {
  this. shiRen = shiRen;
 }
 
 public  ShengBei  zhiXingRenWu () 
 {
  shiRen.singBefore();
 ShengBei  s  =  renWu. zhiXing ();
 shiRen.singAfter();
 return  s;
 }
}

 
 代码修改完毕,看上去没什么问题了。可是仔细一看就会发现这里面有个严重的问题:每次骑士寻找圣杯的时候,他都需要先停下来告诉诗人去朗诵诗歌,如果他忘记了去告诉诗人,诗人就不会去朗诵诗歌了。其实,诗人朗诵诗歌这件事骑士是不关心的。骑士要做的就是寻找圣杯,提醒诗人朗诵诗歌这件事已经超出了他的职责范围。
 通过上面的场景,我们已经发现了传统方法暴露出来的问题。这时我们就需要AOP技术的帮助。AOP用来帮助业务的分离,服务模块化,从而使这些组件更加专注于自身的业务。

下面我们在xml配置文件中追加如下代码段:

<bean id="shiRen" class="com.alibaba.ShiRen"/>
<aop:config>
 <aop:aspect ref="shiRen">
 <aop:pointcut  id="pointcut"  expression="execution(* *. zhiXingRenWu(..))" />
 <aop:before  method="singBefore"  pointcut-ref="pointcut" />
 <aop:after-returning  method="singAfter"  pointcut-ref="pointcut" />
 </aop:aspect>
</aop:config>

 

然后,我们将骑士类再改回原来的样子就行了。在这里,我们将诗人声明为一个切面。至于配置文件里的具体细节后面会提到。

分享到:
评论

相关推荐

    spring-aop-5.0.10.RELEASE-API文档-中文版.zip

    Maven坐标:org.springframework:spring-aop:5.0.10.RELEASE; 标签:spring、aop、springframework、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览...

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    AspectJ in Action: Enterprise AOP with Spring Applications

    - **避免过度使用AOP:**过度使用AOP可能会导致系统复杂度增加,应谨慎考虑是否真正需要引入AOP。 - **注意性能影响:**虽然AOP可以提高代码的可维护性和可扩展性,但过度使用可能会对性能产生负面影响。 #### 代码...

    第四章:Spring AOP API 设计模式1

    10. **代理模式(Proxy)**:Spring AOP的核心就是代理模式,它创建了目标对象的代理,代理对象在调用实际目标方法之前/之后执行额外的逻辑(如日志、事务管理等),提供了对对象行为的扩展。 11. **模板方法模式...

    Spring基础:Spring AOP简单使用

    - **XML配置**:在Spring的配置文件中,可以使用&lt;aop:config&gt;标签来定义切面,&lt;aop:pointcut&gt;定义切点,&lt;aop:advisor&gt;定义通知,&lt;aop:aspect&gt;将切点和通知关联起来。 - **注解配置**:Spring 2.5引入了基于注解的...

    spring-aop-5.2.0.RELEASE-API文档-中文版.zip

    Maven坐标:org.springframework:spring-aop:5.2.0.RELEASE; 标签:springframework、spring、aop、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    Spring的Hello World:理解AOP

    1. **事务管理**:Spring AOP常用于事务管理,自动在每个数据库操作前后处理事务的开启、提交、回滚等。 2. **日志记录**:可以在方法调用前后记录日志,无需在每个需要的日志的地方重复代码。 3. **性能监控**:...

    hualinux spring 3.15:Spring AOP.pdf

    此外,需要在Spring的Bean配置文件中添加&lt;aop:aspectj-autoproxy&gt;元素以启用AspectJ注解的支持。 5. 声明AspectJ切面 要在Spring中声明AspectJ切面,需要在IOC容器中将切面声明为Bean实例。一旦在Spring IOC容器中...

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

    3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的通知类型。 4. **丰富的切入点表达式语言**:Spring ...

    day39-Spring 06-Spring的AOP:带有切点的切面

    在"day39-Spring 06-Spring的AOP:带有切点的切面"这个主题中,我们将深入探讨如何在Spring中实现带有切点的切面,以及它们如何与源码和工具结合使用。 首先,理解AOP的基本概念非常重要。AOP的核心是切面(Aspect...

    基于java的企业级应用开发:Spring AOP简介.ppt

    **Spring AOP 简介** 面向切面编程(AOP),全称为 Aspect-Oriented Programming,是一种编程范式,旨在解决传统面向对象编程(OOP)中的代码重复和分散问题。在OOP中,诸如事务管理、日志记录等功能往往会分散在多...

    Spring学习笔记(15)----使用Spring的注解方式实现AOP

    在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...

    spring-aop-6.0.2.jar

    spring-aop-6.0.2.jar

    spring-aop-5.3.12-API文档-中英对照版.zip

    Maven坐标:org.springframework:spring-aop:5.3.12; 标签:springframework、spring、aop、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

    spring-aop-5.3.10-API文档-中文版.zip

    Maven坐标:org.springframework:spring-aop:5.3.10; 标签:springframework、spring、aop、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring AOP IOC源码笔记.pdf

    本笔记将深入探讨这两个概念以及它们在Spring中的实现。 1. Spring框架简介: Spring作为一个轻量级的开源框架,旨在简化企业级应用的开发。它通过提供IOC容器,实现了对象的创建、管理和依赖注入,减轻了开发者对...

    spring-aop-5.0.8.RELEASE-API文档-中英对照版.zip

    Maven坐标:org.springframework:spring-aop:5.0.8.RELEASE; 标签:springframework、spring、aop、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    spring-aop-5.3.15-API文档-中英对照版.zip

    Maven坐标:org.springframework:spring-aop:5.3.15; 标签:spring、aop、springframework、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...

Global site tag (gtag.js) - Google Analytics