• Spring (二) OOP V.S AOP


    1. 介绍
      1. 这是两种不同的编程思想就好比初中数学中学习的横纵坐标,一种是横向的一种是纵向,OOP是代表X轴而AOP代表Y轴,如下图:
      1. 数学几乎可以解释生活中所有的现象,无论是物体运动还是静止,也可以通过数学总结计算出很多规律推动社会发展,数学里面的思想发放已经渗透到了各行各业,也包括软件计算机更离不开数学作为支撑。
    1. 各有千秋
      1. 爱因斯坦之所以是一个伟大的人在于它为人类做出了重大贡献,提出了著名的相对论:认为任何事物都不是独立的都会相互作用,某一个事物在不同环境下结论和用途等都是不同的,同样这个理论也适用于OOPAOP
      1. OOP是面向对象编程是静态的,而AOP为面向切面动态的,在程序运行时不需要改变程序代码,只需要配置一下即可实现增加删除功能,使得编程变成的简单化了,代码更加独立,耦合性降低,说的更严格一些AOP遵循OOP原则,它是OOP的扩展、补充。
    1. 原理
      1. 每一种技术它的原理都是重中之重,了解了原理了解了产生、发展、消亡的过程才会真正理解本质,用AOP这么一个的词来代表面向切面编程,也许和我一样你对AOP还是有些陌生,可你是否对代理模式也陌生呢,其实,AOP没有什么只不过呢用设计模式用的很巧妙,通过代理为目标对象或类增加新的功能,看起来我们并没有对目标对象写任何代码。
      2. Java中最常用的两种实现代理方式是JDKCGLIB,分别是JavaSpring提供给我们的,SpringIOC容器管理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正越来越广泛和受到很多编程人员的青睐,可见编程向着简单方向发展的趋势。
  • 相关阅读:
    js 控制页面跳转的5种方法
    弹性盒
    js中变量声明有var和没有var的区别
    解决Cannot read property 'style' of null中样式问题
    JS中用for循环解决重复定义的问题
    博客第一天
    jQuery 无缝轮播
    随鼠标移动
    倒计时
    轮播图
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978562.html
Copyright © 2020-2023  润新知