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>
然后,我们将骑士类再改回原来的样子就行了。在这里,我们将诗人声明为一个切面。至于配置文件里的具体细节后面会提到。
分享到:
相关推荐
Maven坐标:org.springframework:spring-aop:5.0.10.RELEASE; 标签:spring、aop、springframework、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览...
本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...
- **避免过度使用AOP:**过度使用AOP可能会导致系统复杂度增加,应谨慎考虑是否真正需要引入AOP。 - **注意性能影响:**虽然AOP可以提高代码的可维护性和可扩展性,但过度使用可能会对性能产生负面影响。 #### 代码...
10. **代理模式(Proxy)**:Spring AOP的核心就是代理模式,它创建了目标对象的代理,代理对象在调用实际目标方法之前/之后执行额外的逻辑(如日志、事务管理等),提供了对对象行为的扩展。 11. **模板方法模式...
- **XML配置**:在Spring的配置文件中,可以使用<aop:config>标签来定义切面,<aop:pointcut>定义切点,<aop:advisor>定义通知,<aop:aspect>将切点和通知关联起来。 - **注解配置**:Spring 2.5引入了基于注解的...
Maven坐标:org.springframework:spring-aop:5.2.0.RELEASE; 标签:springframework、spring、aop、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
1. **事务管理**:Spring AOP常用于事务管理,自动在每个数据库操作前后处理事务的开启、提交、回滚等。 2. **日志记录**:可以在方法调用前后记录日志,无需在每个需要的日志的地方重复代码。 3. **性能监控**:...
此外,需要在Spring的Bean配置文件中添加<aop:aspectj-autoproxy>元素以启用AspectJ注解的支持。 5. 声明AspectJ切面 要在Spring中声明AspectJ切面,需要在IOC容器中将切面声明为Bean实例。一旦在Spring IOC容器中...
3. **灵活的通知模型**:Spring AOP提供了多种类型的通知,包括around、before、after returning、after throwing等,使得开发者可以根据实际需求选择最适合的通知类型。 4. **丰富的切入点表达式语言**:Spring ...
在"day39-Spring 06-Spring的AOP:带有切点的切面"这个主题中,我们将深入探讨如何在Spring中实现带有切点的切面,以及它们如何与源码和工具结合使用。 首先,理解AOP的基本概念非常重要。AOP的核心是切面(Aspect...
**Spring AOP 简介** 面向切面编程(AOP),全称为 Aspect-Oriented Programming,是一种编程范式,旨在解决传统面向对象编程(OOP)中的代码重复和分散问题。在OOP中,诸如事务管理、日志记录等功能往往会分散在多...
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
spring-aop-6.0.2.jar
Maven坐标:org.springframework:spring-aop:5.3.12; 标签:springframework、spring、aop、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Maven坐标:org.springframework:spring-aop:5.3.10; 标签:springframework、spring、aop、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
本笔记将深入探讨这两个概念以及它们在Spring中的实现。 1. Spring框架简介: Spring作为一个轻量级的开源框架,旨在简化企业级应用的开发。它通过提供IOC容器,实现了对象的创建、管理和依赖注入,减轻了开发者对...
Maven坐标:org.springframework:spring-aop:5.0.8.RELEASE; 标签:springframework、spring、aop、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
Maven坐标:org.springframework:spring-aop:5.3.15; 标签:spring、aop、springframework、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...