Spring (二) OOP V.S AOP

  1. 介绍
    1. 这是两种不同的编程思想就好比初中数学中学习的横纵坐标,一种是横向的一种是纵向,OOP是代表X轴而AOP代表Y轴,如下图:
      1. Spring (二) OOP V.S AOP_第1张图片
    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正越来越广泛和受到很多编程人员的青睐,可见编程向着简单方向发展的趋势。

 

你可能感兴趣的:(spring)