查找网站后台入口,卑鄙的网站开发公司,沈阳网站建设公司排名,如何上传图片到网站目录#xff1a; 第一题 Spring事务传播机制第二题 Spring事务什么时候会失效?第三题 什么是bean的⾃动装配#xff0c;有哪些⽅式#xff1f;第四题 Spring中的Bean创建的⽣命周期有哪些步骤#xff1f;第五题 Spring中Bean是线程安全的吗#xff1f; 第一题 Spring事务… 目录 第一题 Spring事务传播机制第二题 Spring事务什么时候会失效?第三题 什么是bean的⾃动装配有哪些⽅式第四题 Spring中的Bean创建的⽣命周期有哪些步骤第五题 Spring中Bean是线程安全的吗 第一题 Spring事务传播机制
多个事务⽅法相互调⽤时事务如何在这些⽅法间传播⽅法A是⼀个事务的⽅法⽅法A执⾏过程中调⽤了⽅法B那么⽅法B有⽆事务以及⽅法B对事务的要求不同都会对⽅法A的事务具体执⾏造成影响同时⽅法A的事务对⽅法B的事务执⾏也有影响这种影响具体是什么就由两个⽅法所定义的事务传播类型所决定。
REQUIRED(Spring默认的事务传播类型)如果当前没有事务则⾃⼰新建⼀个事务如果当前存在事务则加⼊这个事务SUPPORTS当前存在事务则加⼊当前事务如果当前没有事务就以⾮事务⽅法执⾏MANDATORY当前存在事务则加⼊当前事务如果当前事务不存在则抛出异常。REQUIRES_NEW创建⼀个新事务如果存在当前事务则挂起该事务。NOT_SUPPORTED以⾮事务⽅式执⾏,如果当前存在事务则挂起当前事务NEVER不使⽤事务如果当前事务存在则抛出异常NESTED如果当前事务存在则在嵌套事务中执⾏否则REQUIRED的操作⼀样开启⼀个事务
第二题 Spring事务什么时候会失效?
spring事务的原理是AOP进⾏了切⾯增强那么失效的根本原因是这个AOP不起作⽤了常⻅情况有如下⼏种
发⽣⾃调⽤类⾥⾯使⽤this调⽤本类的⽅法this通常省略此时这个this对象不是代理类⽽是UserService对象本身解决⽅法很简单让那个this变成UserService的代理类即可⽅法不是public的Transactional 只能⽤于 public 的⽅法上否则事务不会失效如果要⽤在⾮public ⽅法上可以开启 AspectJ 代理模式。数据库不⽀持事务没有被spring管理异常被吃掉事务不会回滚(或者抛出的异常没有被定义默认为RuntimeException)
第三题 什么是bean的⾃动装配有哪些⽅式
开启⾃动装配只需要在xml配置⽂件中定义“autowire”属性
bean idcutomer classcom.xxx.xxx.Customer autowire /autowire属性有五种装配的⽅式
no – 缺省情况下⾃动配置是通过“ref”属性⼿动设定 。
⼿动装配以value或ref的⽅式明确指定属性值都是⼿动装配。
需要通过‘ref’属性来连接bean。byName-根据bean的属性名称进⾏⾃动装配。
Cutomer的属性名称是personSpring会将bean id为person的bean通过setter⽅法进⾏⾃动
装配。
bean idcutomer classcom.xxx.xxx.Cutomer autowirebyName/
bean idperson classcom.xxx.xxx.Person/byType-根据bean的类型进⾏⾃动装配。
Cutomer的属性person的类型为PersonSpirng会将Person类型通过setter⽅法进⾏⾃动装
配。
bean idcutomer classcom.xxx.xxx.Cutomer autowirebyType/
bean idperson classcom.xxx.xxx.Person/constructor-类似byType不过是应⽤于构造器的参数。如果⼀个bean与构造器参数的类型形同则进⾏⾃动装配否则导致异常。
Cutomer构造函数的参数person的类型为PersonSpirng会将Person类型通过构造⽅法进⾏⾃动
装配。
bean idcutomer classcom.xxx.xxx.Cutomer autowireconstrutor/
bean idperson classcom.xxx.xxx.Person/autodetect-如果有默认的构造器则通过constructor⽅式进⾏⾃动装配否则使⽤byType⽅式进⾏⾃动装配。
如果有默认的构造器则通过constructor⽅式进⾏⾃动装配否则使⽤byType⽅式进⾏⾃动装配。Autowired⾃动装配bean可以在字段、setter⽅法、构造函数上使⽤。
第四题 Spring中的Bean创建的⽣命周期有哪些步骤
Spring中⼀个Bean的创建⼤概分为以下⼏个步骤
推断构造⽅法实例化填充属性也就是依赖注⼊处理Aware回调初始化前处理PostConstruct注解初始化处理InitializingBean接⼝初始化后进⾏AOP
第五题 Spring中Bean是线程安全的吗
Spring本身并没有针对Bean做线程安全的处理所以
如果Bean是⽆状态的那么Bean则是线程安全的如果Bean是有状态的那么Bean则不是线程安全的 另外Bean是不是线程安全跟Bean的作⽤域没有关系Bean的作⽤域只是表示Bean的⽣命周期范围对于任何⽣命周期的Bean都是⼀个对象这个对象是不是线程安全的还是得看这个Bean对象本身。
如果我的内容对你有帮助请点赞评论收藏。创作不易大家的支持就是我坚持下去的动力