多个事务⽅法相互调⽤时,事务如何在这些⽅法间传播,⽅法A是⼀个事务的⽅法,⽅法A执⾏过程中调⽤了⽅法B,那么⽅法B有⽆事务以及⽅法B对事务的要求不同都会对⽅法A的事务具体执⾏造成影响,同时⽅法A的事务对⽅法B的事务执⾏也有影响,这种影响具体是什么就由两个⽅法所定义的事务传播类型所决定。
spring事务的原理是AOP,进⾏了切⾯增强,那么失效的根本原因是这个AOP不起作⽤了!常⻅情况有如下⼏种
开启⾃动装配,只需要在xml配置⽂件中定义“autowire”属性
<bean id="cutomer" class="com.xxx.xxx.Customer" autowire="" />
autowire属性有五种装配的⽅式:
⼿动装配:以value或ref的⽅式明确指定属性值都是⼿动装配。
需要通过‘ref’属性来连接bean。
Cutomer的属性名称是person,Spring会将bean id为person的bean通过setter⽅法进⾏⾃动
装配。
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byName"/>
<bean id="person" class="com.xxx.xxx.Person"/>
Cutomer的属性person的类型为Person,Spirng会将Person类型通过setter⽅法进⾏⾃动装
配。
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byType"/>
<bean id="person" class="com.xxx.xxx.Person"/>
Cutomer构造函数的参数person的类型为Person,Spirng会将Person类型通过构造⽅法进⾏⾃动
装配。
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="construtor"/>
<bean id="person" class="com.xxx.xxx.Person"/>
如果有默认的构造器,则通过constructor⽅式进⾏⾃动装配,否则使⽤byType⽅式进⾏⾃动装配。
@Autowired⾃动装配bean,可以在字段、setter⽅法、构造函数上使⽤。
Spring中⼀个Bean的创建⼤概分为以下⼏个步骤:
Spring本身并没有针对Bean做线程安全的处理,所以:
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力