`
com_xpp
  • 浏览: 373713 次
社区版块
存档分类
最新评论

Spring AOP原理与生活(二)

 
阅读更多

AOP PK OOP

基本理解:

AOP(Aspect-Oriented Programming,面向对象编程),也可以是说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善。

OOP侧重点:纵向技术即核心关注点(软件的业务流程)

AOP侧重点:横切技术即核心关注点(业务处理流程)和横切关注点(与业务关系不大,但是很重要的部分)

基本关系

很多人在初次接触AOP的时候可能会说,AOP能做到的,一个定义良好的OOP的接口也一样能够做到,我想这个观点是值得商榷的。AOP和定义良好的OOP的接口可能说都是用来解决问题并且实现需求中的横向问题的方法,这是OOP所无法避免的,并且一旦接口不修改的时候,所有事情就会变的一团糟;但是AOP不会这样,你只需修改相应的aspect,再重新组织即可。当然AOP也绝不会代替OOP。核心的需求仍然会有OOP来加以实现,而AOP将会和OOP整合起来,形成一套互补的体系。


AOP功能

Spring AOP的主要功能:日志记录、性能统计、安全控制,事务处理,异常处理。

主要意图:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务。在Spring中提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(如审计和事务管理)进行内聚性的开发。应用对象只实现它们应该做的----完成业务逻辑-----仅此而已。它们并不负责其他系统级关注点,例如日志管理或事务管理。可以更好的将未来不应该粘合在一起的功能进行分离。

Spring AOP的优势

借助于Spring AOP,Spring IoC能够很方便的使用到非常健壮、灵活的企业级服务,是因为Spring AOP能够提供几方面的优势:

1.允许开发者使用声明式业务服务,比如事务服务,安全性服务,EJB开发者都知道,EJB组件能够使用J2EE容器提供的声明式服务,但是这些服务要借助于EJB容器,而Spring AOP却不需要EJB容器,借助于Spring的事务抽象矿建就可以这些服务。

2.开发者可以开发满足业务需求的自定义切面

3.开发SpringAOPAdvice很方便。因为这些AOP Advice仅是POJO类,借助于Spring提供的ProxyFactoryBean,能够快速的搭建SpringAOP Advice

AOP术语解析

例图:


解析:

• Aspect:方向

– 我们将业务组件的事务管理部分提取出来,被提取的层面就称为“方面”,如图中的事务管理。方面的意义在于将业务逻辑中复杂问题分离成不同的层面,使其实现统一集中的管理

• Advice:劝告

– 在特定的连接点执行的动作。如在执行execute()方法前的预处理,在执行完execute()方法后的后处理

• Pointcut:切点

– 连接点的集合,指定在何时引发通知。如事务例子中配置了所有execute.*的方法为切入点

• JoinPoint:连接点

– 程序在执行过程中明确的点,如execute()方法

• Weave:织入

– 将Advice应用到Target Object上的过程叫织入,Spring支持的是动态织入

• Target Object

– 包含连接点的对象,也称为代理的对象。如图中的业务组件。

• Proxy

– Spring AOP默认使用JDK的动态代理,它的代理是运行时创建,也可以使用CGLIB代理

接上一篇Spring AOP源于生活的原理(一)

想要了解更多Spring请从(Spring程序员的春天)开始



分享到:
评论

相关推荐

    Spring攻略(第二版 中文高清版).part1

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    Spring攻略(第二版 中文高清版).part2

    第3章 Spring AOP和AspectJ支持 112 3.1 启用Spring的AspectJ注解支持 113 3.1.1 问题 113 3.1.2 解决方案 113 3.1.3 工作原理 113 3.2 用AspectJ注解声明aspect 115 3.2.1 问题 115 3.2.2 解决方案...

    zookeeper+dubbo+spring

    **Spring** 是一个全面的Java应用开发框架,它简化了Java企业级应用的开发,通过依赖注入(DI)和面向切面编程(AOP)的概念,使得开发者可以更加关注业务逻辑,而非底层的基础设施。在本项目中,Spring可能会被用来...

    JSP源码 网上订餐系统(struts+spring+hibernate).zip

    网上订餐系统是现代生活中的常见应用场景,而本项目采用的技术栈——Struts、Spring和Hibernate,是Java开发中非常经典的MVC架构模式。这个系统源码为我们提供了一个深入了解这三大框架集成应用的宝贵学习资源。 ...

    都市生活系统.rar

    此外,Spring还提供了AOP(面向切面编程)功能,用于实现如日志记录、事务管理等横切关注点。 其次,Spring MVC是Spring框架的一个模块,专门用于处理Web请求。它遵循Model-View-Controller设计模式,将业务逻辑、...

    基于ssm的校园生活电子商城.zip

    1. **Spring框架**:Spring是Java开发的核心框架,它提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,简化了Java应用的开发。在本项目中,Spring负责管理各个组件的生命周期,实现对象间的依赖关系,并通过...

    1023-基于ssm校园生活电子商城(源码+数据库).rar

    这个项目"1023-基于SSM校园生活电子商城"是一个完整的电子商务平台,适用于大学生日常生活需求,提供了源码和数据库,方便学习者进行二次开发或理解Web应用的实现原理。 **Spring框架**: Spring是Java企业级应用的...

    基于ssm+jsp的校园二手物品交易平台.zip

    1. **Spring框架**:Spring的核心功能包括IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。IoC使得开发者不再需要手动创建和管理对象,而由Spring容器来控制;AOP则用于...

    新生活购物平台

    同时,Spring框架作为一个全面的后端解决方案,可以整合其他组件如Spring MVC、Spring Security等,提供依赖注入和AOP(面向切面编程)等功能。 总的来说,【新生活购物平台】项目是一个学习和实践JavaWeb开发的好...

    webservice

    - **AOP(面向切面编程)**:利用Spring的AOP特性,可以方便地进行日志记录、事务管理等横切关注点的处理。 - **测试**:Spring支持单元测试和集成测试,便于对Web服务的客户端和服务器端进行验证。 总结来说,这个...

    基于ssm的校园生活电子商城(源码)

    1. **Spring框架**:Spring是Java领域的一个核心框架,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,使得应用程序的开发变得更加模块化和易于管理。在本项目中,Spring可能用于管理数据库连接、事务处理以及...

    外卖商城平台的微信小程序+ssm后端源码案例设计.zip

    二、Spring MVC Spring MVC是Spring框架的一部分,专门用于处理Web请求。它将模型、视图和控制器分离,提高了代码的可维护性和可测试性。开发者可以通过注解配置路由,处理HTTP请求,并将结果返回到前端。 三、...

    ssh整合案例

    SSH(Secure Shell)是一种网络协议,用于在不安全的网络...此外,随着技术的发展,Spring Boot和Spring MVC等更现代的框架逐渐取代了传统的SSH组合,但理解SSH整合对于理解现代Web应用的架构原理仍然是非常有价值的。

    060ssm-jsp-mysql停车场管理系统.zip(可运行源码+数据库文件+)

    Spring框架作为Java企业级应用的基础,提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,使得代码结构清晰,易于维护。Spring MVC则是Spring框架的一个模块,专门用于构建Web应用,它将模型、视图和控制器分离...

    SSM集成介绍.pdf

    SSM集成介绍 SSM是Java Web开发中的一个经典整合框架,由Spring、...此外,随着技术的发展,Spring Boot和Spring Cloud等新型框架正在逐渐取代传统的SSM,但理解SSM的集成原理对于理解现代Java Web开发仍有很大帮助。

    JSP基于SSM电子产品网上购物系统可升级SpringBoot源码案例设计.zip

    Spring是一个开源的Java企业级应用开发框架,核心特性包括依赖注入(DI)和面向切面编程(AOP)。Spring MVC作为其Web层的解决方案,负责处理HTTP请求,提供模型-视图-控制器(MVC)模式,使得业务逻辑与表现层分离...

    议程生活:门户网站生活在议程中,而原理生活在suas数据中,拯救人类

    "原理生活在suas数据中"这部分描述可能是在强调应用程序的数据驱动特性。"SUAS"在这里可能是"Smart User Activity System"的缩写,或者是开发者自定义的一个术语,代表用于存储和处理用户活动的智能系统。这个系统...

    基于ssm语言校园快递代取系统.zip

    1. **Spring框架**:Spring是Java EE领域的一个核心框架,提供了IOC(控制反转)和AOP(面向切面编程)等特性,使得代码更加松耦合,易于测试和维护。 2. **SpringMVC**:Spring MVC是Spring框架的一部分,用于处理...

    基于SSM的健康管理系统(源码 + 演示视频)

    5. **源码分析**:通过源码学习,我们可以深入理解每个模块的实现原理,例如DAO层如何通过MyBatis与数据库交互,Service层如何封装业务逻辑,Controller层如何接收并处理HTTP请求。这有助于提升我们的编程技能和解决...

Global site tag (gtag.js) - Google Analytics