Spring-AOP

AOP

       AOP也叫做面向切面编程。是OOP的一个补充。

       OOP:Object Oriented Programming 面向对象编程,

                该技术使用了封装,继承,多态,抽象来建立的一个对象层。

        AOP作用:在不改变原来代码的前提下,给源代码插入新的执行代码( 日志,事务,权限,缓存

                          处理等)。         


     AOP底层原理小分析:          

        AOP底层基于代理机制来实现功能扩展。

        代理模式:

                     静态代理:

                              在代码编译期时,代理类已经存在。

                              好处:可以让我们只关心核心代码。

                              坏处:多个代理类,没有解决代码冗余问题。

                      动态代理:

                               在代码编译期时,代理类不存在。

                               运行时,动态的创建出来代理对象。

                                好处:解决代码冗余问题,类与类之间的依赖。

                       代理类:B实现A接口,C实现A接口,C调用B的方法,C就是代理类。

                       AOP底层通过字节码技术,把目标对象以及额外功能动态封装,生成代理

                       对象 ( 动态代理 ), AOP 使用了 JDK 动态代理 以及 cglib 动态代理

       JDK生成动态代理对象:

             使用反射机制,方法和对象都是传入的变量,就可以经过传入的对象和方法,

             从而调用 JDK中提供的动态代理API(newProxyInstance()方法),生成代理对象,

             被代理的类必须实现接口。


      AOP标签小结

       把方法和增强处理编织在一起

<bean class="增强类的类全路径" id="advice" />

让Spring知道哪些方法需要使用增强处理
<aop:config>
    <aop:pointcut expression="execution(返回值 类全路径.类名.方法(参数,可以多个))" id="MyMethod" />
    <aop:advisor advice-ref="advice(配置好的增强功能类)" pointcut-ref="MyMethod(aop:pointcut配置好的目标类的id)">

</aop:config>

     如果是更新数据操作的方法,这些方法需要事务处理

声明事务管理器

<bean id="transactionMannger" class="org.springframework.jdbc.datasource.DataSourceTransactionMannger">
    <property name="dataSource" ref="dataSource数据源" />
</bean>

声明事务增强<tx ... />
<tx:advice id="txAdvice" transaction-mannger="transactionMannger事务管理器">
    定义事务规则    表示get/set方法开头的方法不需要事务处理
    <tx:method name="get*" read-only="true" />
    <tx:method name="set*" read-only="true" />
    表示除了get/set开头的方法,都需要事务处理
    <tx:method name="*" propagation="REQUIRED" />
</tx:advice>

定义切入点,把让事务处理和方法编织在一起
<aop:config>
    <aop:pointcut expression="execution(返回值 类全路径.类名.方法(参数,可以多个))" id="Im">
    <aop:advice advice-ref="txAdvice事务增强" pointcut="Im(aop:pointcut配置好的目标类的id)">
</aop:config>

tx事务管理属性详细请看http://note.youdao.com/noteshare?id=3e7560680fd456aee906f6b5c3f3c2ad&sub=E32AD99AF86B46DDA5A3C4B7CF1A0AED

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值