第一种方式(全注解):

<!-- 定义事务管理器(声明式的事务) -->  
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
     <tx:annotation-driven transaction-manager="transactionManager"/>

然后在需要添加事务的类上面添加上@Transactional注解方式。

在方法上的@Transactional注解会覆盖掉类上的@Transactional。

  • mode:指定Spring事务管理框架创建通知bean的方式。可用的值有proxy和aspectj。前者是默认值,表示通知对象是个JDK代理;后者表示Spring AOP会使用AspectJ创建代理
  • proxy-target-class:如果为true,Spring将创建子类来代理业务类;如果为false,则使用基于接口的代理。(如果使用子类代理,需要在类路径中添加CGLib.jar类库)
  • order:如果业务类除事务切面外,还需要织入其他的切面,通过该属性可以控制事务切面在目标连接点的织入顺序。
  • transaction-manager:指定到现有的PlatformTransaction Manager bean的引用,通知会使用该引用。

@Transactional 注解应该只被应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错, 但是这个被注解的方法将不会展示已配置的事务设置。
        @Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。然而,请注意仅仅 @Transactional 注解的出现不足于开启事务行为,它仅仅 是一种元数据,能够被可以识别 @Transactional 注解和上述的配置适当的具有事务行为的beans所使用。上面的例子中,其实正是 <tx:annotation-driven/>元素的出现 开启 了事务行为。
        Spring团队的建议是你在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。你当然可以在接口上使用 @Transactional 注解,但是这将只能当你设置了基于接口的代理时它才生效。因为注解是 不能继承 的,这就意味着如果你正在使用基于类的代理时,那么事务的设置将不能被基于类的代理所识别,而且对象也将不会被事务代理所包装(将被确认为严重的)。因此,请接受Spring团队的建议并且在具体的类上使用 @Transactional 注解。

第二种方法:

<!-- 事务管理器 -->
 <bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>

<!-- 配置事务的传播特性 -->
 <tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
   <tx:method name="get*" propagation="REQUIRED" read-only="true" />
   <tx:method name="del*" propagation="REQUIRED" />
   <tx:method name="save*" propagation="REQUIRED" />
   <tx:method name="update*" propagation="REQUIRED" />
  </tx:attributes>
 </tx:advice>

<!-- 配置事务拦截器拦截哪些类的哪些方法,一般设置成拦截Service -->
 <aop:config>
  <aop:pointcut expression="execution(* com.xy.service.*.*(..))"
   id="allDaoMethod" />
  <aop:advisor advice-ref="txAdvice" pointcut-ref="allDaoMethod" />
 </aop:config>

表示com.xy.service包下的所有方法为为事务管理。

execution(* com.aptech.jb.epet.dao.hibimpl.*.*(..)) 

这样写应该就可以了 这是com.aptech.jb.epet.dao.hibimpl 包下所有的类的所有方法。。

第一个*代表所有的返回值类型

第二个*代表所有的类

第三个*代表类所有方法 最后一个..代表所有的参数。

下面给出一些常见切入点表达式的例子:

  • 任意公共方法的执行:

    execution(public * *(..))
    
  • 任何一个以“set”开始的方法的执行:

    execution(* set*(..))
    
  • AccountService 接口的任意方法的执行:

    execution(* com.xyz.service.AccountService.*(..))
    
  • 定义在service包里的任意方法的执行:

    execution(* com.xyz.service.*.*(..))
    
  • 定义在service包或者子包里的任意类的任意方法的执行:

    execution(* com.xyz.service..*.*(..))

spring aop日志(两种方式)相关推荐

  1. spring aop的两种写法aspect和advisor

    本文转自:https://www.cnblogs.com/leiOOlei/p/3709607.html 首先看个例子,如下 接口代码: package com.lei.demo.aop.schema ...

  2. Spring AOP的两种动态代理方式的原理和实现(JDK和CGLIB)

    代理机制 Spring 的AOP 部分使用使用JDK动态代理,部分使用CGLIB来为目标对象创建代理.如果被代理的目标对象实现了至少一个接口,则会使用JDK动态代理:如果目标对象没有实现任何接口,则会 ...

  3. Spring boot配置文件两种方式

    1@ConfigurationProperties(prefix = "author") application.properties author.name=liuyuzhu a ...

  4. RabbitMQ(六)——Spring boot中消费消息的两种方式

    前言 上一篇博客中,我们只是简单总结了Spring boot中整合RabbitMQ的操作,针对消息消费的两种方式只是简单给了一个实例,这篇博客,我们进一步总结关于Spring boot消息消费的相关功 ...

  5. 实现日志管理的两种方式:aop、拦截器

    一.Spring aop 实现 AOP概念: 切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象.事务管理是Java应用程序中一个关于横切关注点的很好的例子.在Spring AOP ...

  6. Spring系列之AOP实现的两种方式

    Spring只支持XML方式而没有实现注解的方式(也叫AspectJ方式)的AOP,所以要使用@Aspect注解,只能引入AspectJ相关的 jar 包: aopalliance-1.0.jar 和 ...

  7. spring中AOP动态代理的两种方式

    AOP动态代理的两种方式 Spring AOP动态代理的方式(spring的AOP默认是JDK Proxy) 浅谈这两种动态代理 JDK的动态代理,需要有实现接口 动态代理--JDK Proxy ⚫ ...

  8. 对spring boot yml配置文件敏感信息加密处理的两种方式

    目录 方式一:手动配置加密处理(手动配置分三种情况) 方式二:spring boot整合Jasypt实现yml配置文件敏感信息加密 yml配置文件敏感信息无非就是数据库密码,redis密码,以及整合的 ...

  9. AOP的两种实现方式

    AOP,面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术.     Aspect Oriented Programming(AOP),是目前软 ...

  10. Spring实现AOP的4种方式

    Spring实现AOP的4种方式 先了解AOP的相关术语: 1.通知(Advice): 通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作. 2.连接点(Joinpoint ...

最新文章

  1. F - 娜娜梦游仙境系列——多民族王国
  2. Nginx 常用配置(学习笔记三)
  3. Linux内核tracepoints
  4. mysql8.0主从配置,MySQL 8.0主从服务器(Master-Slave)配置
  5. 即时通讯 我穿上球鞋
  6. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算 没有数位限制
  7. oracle数据库导入表空间,oracle数据库表空间创建导入导出
  8. centos 升级 glibc和glibcxxx ,解决error: Failed dependencies等问题
  9. 管理系统中的计算机应用答案,《管理系统中计算机应用》试卷答案
  10. 二叉树 中序遍历 python_leetcode No.105 从前序与中序遍历序列构造二叉树
  11. 使用cookies查询商品详情
  12. ICU - International Components for Unicode
  13. html保护眼睛背景色,保护眼睛的颜色和各种背景颜色设置方法
  14. 【SpringBoot】微信点餐系统
  15. 苹果亮度自动调节怎么关闭_Android 亮度自动调节是如何实现的?
  16. 基于BP神经网络控制+Simulink双闭环直流调速系统仿真
  17. CocosCreator + JavaScript游戏开发
  18. C# 使用ToolTip控件实现气泡消息提示
  19. Nacos源码之一-配置自动更新(重写)
  20. 单目多帧自监督深度估计(2021-2022)研究进展

热门文章

  1. 凤梨文案:水果凤梨新鲜的文案,水果凤梨的销售文案
  2. html form multipart,html form 中Enctype=multipart/form-data 的作用
  3. JS手机端移动端长按longtap事件
  4. php教程数据库操作,php mysql数据库操作教程_PHP教程
  5. 【AGC】iOS的applink的回调没反应问题分析
  6. VUE 钩子函数超详细解析
  7. 这个报表工具绝了!能做GIS数据地图,还能集成R语言!
  8. FanoutExchange交换机简单使用
  9. 模式识别边肇祺第二章(一)
  10. Oracle数据库死锁处理