1. 介绍

    1. 这是两种不同的编程思想就好比初中数学中学习的横纵坐标,一种是横向的一种是纵向,OOP是代表X轴而AOP代表Y轴,如下图:

    1. 数学几乎可以解释生活中所有的现象,无论是物体运动还是静止,也可以通过数学总结计算出很多规律推动社会发展,数学里面的思想发放已经渗透到了各行各业,也包括软件计算机更离不开数学作为支撑。
  1. 各有千秋

    1. 爱因斯坦之所以是一个伟大的人在于它为人类做出了重大贡献,提出了著名的相对论:认为任何事物都不是独立的都会相互作用,某一个事物在不同环境下结论和用途等都是不同的,同样这个理论也适用于OOP和AOP。
    1. OOP是面向对象编程是静态的,而AOP为面向切面动态的,在程序运行时不需要改变程序代码,只需要配置一下即可实现增加删除功能,使得编程变成的简单化了,代码更加独立,耦合性降低,说的更严格一些AOP遵循OOP原则,它是OOP的扩展、补充。
  1. 原理

    1. 每一种技术它的原理都是重中之重,了解了原理了解了产生、发展、消亡的过程才会真正理解本质,用AOP这么一个的词来代表面向切面编程,也许和我一样你对AOP还是有些陌生,可你是否对代理模式也陌生呢,其实,AOP没有什么只不过呢用设计模式用的很巧妙,通过代理为目标对象或类增加新的功能,看起来我们并没有对目标对象写任何代码。
    2. Java中最常用的两种实现代理方式是JDK和CGLIB,分别是Java和Spring提供给我们的,Spring用IOC容器管理AOP类实现可配置的切向服务。
    3. AOP主要用于处理切向性质的服务,比如日志记录、事务管理、权限管理、缓存、安全检查等等,AOP已经成为了解决这类问题的一种常用解决方案。
    4. 学是为了用上, 让我们来看一下如何用Spring IOC/AOP管理事务。
  1. 应用

    1. 下面这段代码是物料维护中对事务的配置,每个系统中配置都是很类似的,会了这种方法在别的系统中也是这样配置。
    1. 代码事务配置*.xml

      1. <!-- 配置sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean><!-- 配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><!-- 哪些类哪些方法使用事务--><aop:config><aop:pointcut id="allManagerMethod" expression="execution(* com.bjpowernode.drp.service.*.*(..))"/><aop:advisor advice-ref="txAdive" pointcut-ref="allManagerMethod"/></aop:config><tx:advice id="txAdive" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="*" propagation="REQUIRED" read-only="true"/></tx:attributes></tx:advice>
        
    1. 另一种实现方式是通过Annotation注解形式,这种方式不用写配置文件,感兴趣的人们可以试试。
  1. AOP正越来越广泛和受到很多编程人员的青睐,可见编程向着简单方向发展的趋势。

转载于:https://www.cnblogs.com/lilongsheng1125/p/4978562.html

Spring (二) OOP V.S AOP相关推荐

  1. Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构

    2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构         先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...

  2. 【Spring】面向切面编程AOP

    AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...

  3. 图文结合分析Spring的面向切面编程--AOP

    Spring还可以这么学–AOP 上一篇文章Spring还可以这么学–IoC(控制反转) / DI(依赖注入)理解 1. 什么是AOP? AOP(Aspect Oriented Programming ...

  4. Spring学习(八)AOP详解

    本文借鉴:Spring学习 一.一个例子 在上面的例子中,包租婆的核心业务就是签合同,收房租,那么这就够了,灰色框起来的部分都是重复且边缘的事,交给中介商就好了,这就是 AOP 的一个思想:让关注点代 ...

  5. Spring 框架基础(04):AOP切面编程概念,几种实现方式演示

    本文源码:GitHub·点这里 || GitEE·点这里 一.AOP基础简介 1.切面编程简介 AOP全称:Aspect Oriented Programming,面向切面编程.通过预编译方式和运行期 ...

  6. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  7. Spring源码分析之AOP源码分析

    文章目录 前言 一.AOP回顾 二.源码分析 EnableAspectJAutoProxy注解 AnnotationAwareAspectJAutoProxyCreator 前言 Spring框架的两 ...

  8. Spring总结(IOC、AOP原理以及Spring事务)

    一.概述 1.Spring是一个开源免费且轻量级的框架 , 非侵入式的 . 2.控制反转 IoC , 面向切面 Aop 3 .对事物的支持 , 对框架的支持 一句话概括: Spring 是一个轻量级的 ...

  9. JavaEE——Spring学习笔记03【AOP开发】

    JavaEE--Spring学习笔记01[Ioc开发的模式] JavaEE--Spring学习笔记02[Spring和Mybatis的整合] JavaEE--Spring学习笔记03[AOP开发] J ...

最新文章

  1. 约瑟夫生死环游戏c语言程序,使用C++实现的约瑟夫生死游戏
  2. math range error
  3. EventBridge消息路由|高效构建消息路由能力
  4. 使用spi协议,接收来自slave的数据之前写0xff的原因
  5. maven deploy上传本地jar至私服
  6. 排序 之 快排、归并、插入 - 时间复杂度----掌握思想和过程
  7. 计算机术语列是,计算机术语-RAM ROM
  8. Windows命令行安装程序管理工具 - Scoop
  9. OpenCV 基本模块
  10. android camera无预览拍照 后台拍照
  11. 小D课堂-nexus
  12. Unity世界坐标转换屏幕坐标(详解)
  13. 1vcpu等于几核?vcpu是什么意思
  14. php手册chm打开空白
  15. 设置linux kernel 日志打印方法
  16. C++ 学习(四)程序流程结构 - 顺序结构、选择结构、循环结构、跳转语句
  17. 零基础自学Java路线总结,有效利用网络各机构课程资源
  18. webug 4.0 第四关 POST注入
  19. Failed to introspect annotated methods on class 异常
  20. 知识焦虑不可怕,可怕的是在焦虑中迷失方向

热门文章

  1. count(*)效率提高_想使用多线程来提高处理速度,却还不知道使用CountDownLatch与CyclicBarries?...
  2. CSDN写作Markdown编辑器中的Python命令帮手
  3. AI视觉组培训第二弹——入门篇
  4. HX711双通道AD转换模块
  5. 2019全国普通高校学科竞赛排行榜发布
  6. linux配置永久网管,企业Linux网管配置
  7. dataset__getitem___PyTorch源码解析与实践(1):数据加载Dataset,Sampler与DataLoader
  8. linnux 流量控制模块tc_可编程控制器PLC基本工作原理(第一颗)
  9. python在linux报错xe6,python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误
  10. oracle中DBWR全称,Oracle基本术语大全