摘要: spring事务的原理是AOP,进行了切面增强,那么失效的根本原因时这个AOP不起作用了!常见情况如下集中: 1、发生自调用,类里面使用this调用本类的方法(this通常省略),此时这个this不是代理对象,而是UserService类本身,所以失效。 解决办法很简单,让this变成UserSer 阅读全文
posted @ 2021-05-21 20:23 刘指导 阅读(2131) 评论(0) 推荐(0) 编辑
摘要: 多个方法相互调用时,事务如何在这些方法间传播 方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也会有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。 require 阅读全文
posted @ 2021-05-21 20:15 刘指导 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 在使用spring框架时,可以有两种使用事务的方式,一种时编程式事务,一种是申明式事务,@Transactional注解就是申明式的。 首先,事务这个概念式数据库层面的,Spring只是基于数据库中的事务进行了扩展,以及提供了一些能让程序员更加方便操作事务的方式。 比如我们可以通过在某个方法上增加@ 阅读全文
posted @ 2021-05-21 17:04 刘指导 阅读(958) 评论(0) 推荐(0) 编辑
摘要: 单例Bean不是线程安全的 Spring中Bean默认是单例模式的,框架并没有对bean进行对线程封装和处理。 如果Bean是有状态的,那就需要开发人员自己来进行线程安全的保证,最简单的办法就是改变bean的作用域,把singleton改为prototype,这样每次请求bean就相当于是new B 阅读全文
posted @ 2021-05-21 15:59 刘指导 阅读(1070) 评论(0) 推荐(0) 编辑
摘要: singletion:默认,每个容器只能有一个bean的实例,单例模式由BeanFactory自身来维护。该对象的生命周期是与Spring IOC容器一致的(但在第一次被注入时才会创建) prototype:为每一个bean请求提供一个实例。在每次注入时都会创建一个新的对象 request:bean 阅读全文
posted @ 2021-05-21 10:27 刘指导 阅读(625) 评论(0) 推荐(1) 编辑
摘要: 1、解析类得到BeanDefinition (Spring创建对象不是使用程序员定义的class文件,而是使用的BeanDefination) 2、如果有多个构造方法,则需要推断构造方法 3、确定好构造方法后,进行实例化得到一个对象。(原始对象) 4、填充属性,依赖注入。 5、回调Aware,比如B 阅读全文
posted @ 2021-05-21 10:18 刘指导 阅读(284) 评论(0) 推荐(0) 编辑
摘要: ApplicationContext是BeanFactory的子接口 ApplicationContext 提供了更完整的功能: 继承MessageSource,因此支持国际化 统一的资源文件访问方式 提供在监听器中注册bean的事件 同时加载多个配置文件 载入多个(有继承关系)上下文,使得每一个上 阅读全文
posted @ 2021-05-21 09:42 刘指导 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 系统是由许多不同的组件所组成,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责。例如日志、事务管理和安全这样的核心服务经常融入到自身具有核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为他们会跨越系统的多个组件。 当我们需要为分散的对象引入公共行为的 阅读全文
posted @ 2021-05-21 09:22 刘指导 阅读(698) 评论(0) 推荐(0) 编辑
摘要: IOC有三点:容器概念、控制反转、依赖注入。 IOC容器 实际上就是一个map(key,value),里面存放的时各种对象(在xml里配置的bean节点、@repository、@service、@controller、@component),在项目启动的时候或读取配置文件里面的bean节点,根据全 阅读全文
posted @ 2021-05-21 09:10 刘指导 阅读(756) 评论(0) 推荐(1) 编辑