一.AOP的整理总结

aop面向切面编程

  横向重复代码,纵向抽取

动态代理

  1.通过动态代理可以体现aop思想

  2.为什么要哦用动态代理:对目标对象中的方法进行增强

spring aop开发

  spring封装了动态代理代码,我们不需要手写动态代理代码

  还封装了cglib代理——>可以对任何类进行代理增强

spring中的名词

  连接点(Joinpoint),切入点(Ponitcut),通知(Advise),织入(weaving),切面(aspect),目标对象(target),代理(proxy)

二.Spring的AOP事务

1 什么是事务?

事务特性:acid

事务并发问题:脏读,不可重复读,幻读

事务的隔离级别:

(1) 1:读未提交

(2) 2:读已提交

(3) 4:可重复读

(4) 8:串行化

2 spring封装了事务管理的代码

事务操作:(1) 打开事务(2) 提交事务(3) 回滚事务

事务操作对象:因为在不同平台,操作事务的代码各不相同,所以spring提供了一个接口PlatformTransactionManager

PlatformTransactionManager接口(核心对象): JDBCTransactionManager,HibernateTransactionManager,DataSourceTransactionManager(Mybaits)。在spring中的事务管理最为核心的对象就是TransactionManager

spring管理事务的属性:(1)事务隔离级别 (2)是否只读(true只读,false可操作) (3) 事务的传播行为:决定业务方法之间调用,事务应该如何处理

3 spring管理事务方式

(1)编码式

(2) xml配置(aop)

springAOP准备了事务通知(已经写好,环绕通知),目标对象也已经根据自身情况编写好业务逻辑,所以只剩下配置文件,来将通知织入目标对象,生成代理对象。

<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 企业开发中,基本上都是用通配符的方式配置,只要service的方法名有这些开头,就会有事务属性
其中isolation表示事务隔离级别
propagation表示事务传播行为一般都是required
read-only表示是否只读
-->
<tx:method name="save*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="persist*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="update*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="modify*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="delete*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="remove*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="get*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
<tx:method name="find*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
</tx:attributes>
</tx:advice> <!-- 配置织入 -->
<aop:config>
<aop:pointcut id="txPc" expression="execution(* com.javaweb.service..*ServiceImpl.*(..))" />
<!-- 配置切面:通知+切入点 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPc" />
</aop:config>

(3) 注解配置(aop)

需要在配置文件中开启注解在管理事务

@Transaction(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true),该注解可以在类上,也可以在方法上。

    <!-- 开启使用注解管理aop事务 -->
<tx:annotation-driven/>

Spring学习记录(三)的更多相关文章

  1. Spring学习记录(三)---bean自动装配autowire

    Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系,少写几个ref autowire: no ---默认情况,不自动装配,通过ref手动引用 byName---根据 ...

  2. 我的Spring学习记录(五)

    在我的Spring学习记录(四)中使用了注解的方式对前面三篇做了总结.而这次,使用了用户登录及注册来对于本人前面四篇做一个应用案例,希望通过这个来对于我们的Spring的使用有一定的了解. 1. 程序 ...

  3. Spring 学习记录8 初识XmlWebApplicationContext(2)

    主题 接上文Spring 学习记录7 初识XmlWebApplicationContext refresh方法 refresh方法是定义在父类AbstractApplicationContext中的. ...

  4. MyEclipse Spring 学习总结三 SpringMVC

    MyEclipse Spring 学习总结三 SpringMVC 一.SpringMVC原理 1.Springmvc 框架介绍 1)Spring 框架停工了构建Web应用程序的全功能MVC模块.Spr ...

  5. 我的Spring学习记录(二)

    本篇就简单的说一下Bean的装配和AOP 本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用sett ...

  6. 我的Spring学习记录(四)

    虽然Spring管理这我们的Bean很方便,但是,我们需要使用xml配置大量的Bean信息,告诉Spring我们要干嘛,这还是挺烦的,毕竟当我们的Bean随之增多的话,xml的各种配置会让人很头疼. ...

  7. Spring 学习记录3 ConversionService

    ConversionService与Environment的关系 通过之前的学习(Spring 学习记录2 Environment),我已经Environment主要是负责解析properties和p ...

  8. Spring 学习记录6 BeanFactory(2)

    主题 除了Spring 学习记录5 BeanFactory 里写的几个接口外,BeanFactory的实现类还实现了一些其他接口,这篇文章主要介绍这些接口和实现类. 结构 DefaultListabl ...

  9. spring 学习(三):aop 学习

    spring 学习(三):aop 学习 aop 概念 1 aop:面向切面(方面)编程,扩展功能不修改源代码实现 2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 3 aop底层使用动态代 ...

随机推荐

  1. ansible编译安装--操作系统环境Redhat6.4

    安装前安装包准备,下载链接如下: Python2.7下载地址:https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz ansible下载地 ...

  2. Maven中常用插件的配置

    在Maven项目的pom.xml文件中配置插件信息,使用<build></build>标签 1.配置JDK版本插件和Tomcat版本插件 <build> <! ...

  3. CSS基本

    CSS选择器优先级:从高到低 无条件优先的属性只需要在属性后面使用!important,但是IE6不支持.解决办法,IE6是单个支持的. 例如: 在IE6中需要这样写 .className{color ...

  4. js怎样实现继承

    js实现继承的5种方式 js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对 ...

  5. codeforces1016 D. Vasya And The Matrix(思维+神奇构造)

    D. Vasya And The Matrix time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  6. weblogic.xml

    <?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="ht ...

  7. javascript 返回上一页面:onclick="javascript:history.back(-1);"

    <a href="<a href="javascript :history.back(-1)">返回上一页</a>或<a href=& ...

  8. LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence.Fo ...

  9. 熟悉servlet的页面跳转

    jspweb里面用到的servlet跳转页面的方法 使用的jar包只有 commons-lang3-3.5.jar 运行时,tomcat会先根据web.xml里面的信息,查找servlet <? ...

  10. spring双列

    public class MyCollection {     private  String[]array;     private List<String>list;     priv ...