1.上一章,我们谈到了spring+mybatis声明式事务管理,我们在文章末尾提到,在实际项目中,用得更多的是注解式事务管理,这一章将学习一下注解式事务管理的有关知识.注解式事务管理只需要在上一节的小实例上更改两个文件就好: (1)更改spring配置文件applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spri…
一.前言 上一篇博客向大家介绍了Aop的概念,对切面=切点+通知 .连接点.织入.目标对象.代理(jdk动态代理和CGLIB代理)有所了解了.理论很强,实用就在这篇博客介绍. 这篇博客中,小编向大家介绍springAop很常见的使用方式--日志拦截 二.实战 2.1 全局观说明 说明: 假如service出错了,这样错误会抛出到controller,controller捕捉到后,抛出自定义异常.然后@ControllerAdvice + @ExceptionHandler 全局处理 Contro…
在日常开发中经常需要在代码中加入一些记录用户操作日志的log语句,比如谁在什么时间做了什么操作,等等. 把这些对于开发人员开说无关痛痒的代码写死在业务方法中实在不是一件很舒服的事情,于是AOP应运而生. Spring对AOP的支持有以下4种情况: 1.基于代理的AOP 2.@Aspectj 3.纯POJO 4.注入式Aspectj切面 前三种都是基于方法级的,最后一个可以精确到属性及构造器. 关于Spring对AOP的支持的详细内容,读者可以参考<Spring in Action (第二版)中文…
step1 开启切面编程 <!-- 开启切面编程(通过配置织入@Aspectj切面 ) --> <aop:aspectj-autoproxy/> <aop:aspectj-autoproxy />有一个proxy-target-class属性,默认为false,表示使用jdk动态代理织入增强,当配为<aop:aspectj-autoproxy poxy-target-class="true"/>时,表示使用CGLib动态代理技术织入增强.…
对AOP的理解开始是抽象的,看到切点的匹配方式其实与正则表达式性质大致一样就基本了解AOP是基本是个什么作用了.只是整个概念更抽象,需要具化理解.下图列表是AOP相关概念解释,可能也比较抽象^_^ 比如:一个log日志针对系统中的某个特定接口方法,这个方法在系统中广泛实现.如果每个实现的方法都自己添加这个log,那不仅增加开发难度,后续维护的工作量会更复杂.那么AOP切面编程就是一个相当契合的解决方法,一个开发维护也方便. xml配置示例: 图中每个关于aop的属性都很重要也好理解,对point…
例子还是之前的例子.仍然是对mage进行法术攻击时的咒语进行校验,不过略微提高了扩展性. 应用示例 1.在.properties文件中定义参数格式(正则): sp1=^\\D*hello\\D*$ sp2=^\\D*world\\D*$ 2.对需要检查格式的方法参数进行注解,注解中传入的参数需要与.properties文件中的定义相对应: package sample.spring.iocbasis.hero; import sample.spring.iocbasis.annotation.C…
一.为什么要使用多数据源切换? 多数据源切换是为了满足什么业务场景?正常情况下,一个微服务或者说一个WEB项目,在使用Mybatis作为数据库链接和操作框架的情况下通常只需要构建一个系统库,在该系统库创建业务表来满足需求,当然也有分为测试库和正式库dev/prod,不过这俩库的切换是使用配置文件进行切分的,在项目启动时或者打成maven JAR包指定environment-dev.properties或者environment-prod.properties. 那么当程序运行过程中,比如一个co…
Spring事务处理方式 方式1:注解式事务 使用@Transactional注解完成事务控制,此注解可添加到类上,则对类中所有方法执行事务的设定,注解添加到方法上,则对该方法执行事务处理 @Transactional(...)注解参数说明: propagation = Propagation.REQUIRED:设置事务的传播特性,例如当多个事务叠加时,谁起主导作用等 noRollbackForClassName = "异常名称":指定发生什么异常不回滚,使用的是异常的名称 noRol…
Spring 注解式注册 bean: 大致分为以下几步: 开启 context 空间支持 开启自动扫描功能,指定扫描包路径 使用注解配置 bean (使用@Component 注解) 给 bean 注入属性(基本类型和引用类型) 设置 bean 的生命周期 设置 bean 的作用域(默认为单例) 详细: 1 . 开启 context 空间支持 2 . 开启自动扫描功能,指定扫描路径(说明:扫描路径可以设置多个,中间使用,隔开,扫描路径包含指定包和子包内所有的类) <beans xmlns="…
使用步骤: 步骤一.在spring配置文件中引入<tx:>命名空间<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation…