java面试题

  • Spring 中 bean 的作用域?

Spring 中 bean 的作用域是通过scope属性指定。

<bean id="shitService" class="com.layman.service.ShitServiceImpl" scope="singleton" init-method="tuokuzi" destroy-method="capigu"/>
作用域说明
singleton单例 (默认),IOC容器创建时就会创建bean实例,只有一个实例对象
prototype多例,IOC容器创建时不会创建bean示例,调用getBean方法才会创建实例
request每个request请求会实例化一个bean实例
session在一次session会话期间,共享一个bean实例
  • spring 中 bean的作用范围?

singleton

-创建:在IOC容器初始化时就会创建单例对象,如果设置了init-method属性,则在创建对象以后调用初始化方法.
-使用: 每次调用 getBean() 时,返回的都是同一个对象.
-销毁: 在IOC容器销毁时,Bean对象销毁,,如果指定了 destory-method属性,则在销毁前执行 销毁 方法。

prototype

-创建:IOC容器创建时不会创建bean对象,调用getBean方法才会创建。如果设置了 init-method 属性则在创建对象以后调用初始化方法
-使用::每次调用 getBean() 时候,返回的都是新的Bean对象
-销毁::Spring不管!也不会调用 destroy-method !由垃圾回收期负责销毁。
  • spring的4种事务特性,4种隔离级别,7种传播行为,分别是什么?

事务特性(4种):

  1. 原子性 (atomicity):事务不可分割,要么同时完成,要么同时失败。
  2. 一致性 (consistency):事务执行前后,数据应当保持一致的完整性。
  3. 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰 。
  4. 持久性(durability) :事务一旦结束,数据就会持久到数据库中。

隔离级别(4种):

隔离级别说明
Read-Uncommitted读未提交,脏读,不可重复读,虚读都有可能发生
read commited读已提交(Oracle数据库默认),避免脏读。但是不可重复读和虚读有可能发生
repeatable read可重复读(MySQL数据库默认),避免脏读和不可重复读,但是虚读有可能发生.
serializable串行化,事务依次执行,可避免以上所有问题,但SQL效率低下

传播行为(7种):

传播行为说明
REQUIRED必须运行在事务中,如果没有事务,就新建一个。如果有,就加入该事务(默认)
SUPPORTS支持事务,如果有事务,就在事务中执行,如果没有,就以非事务方式运行
MANDATORY必须运行在事务中,如果没有事务,就抛出异常
REQUIRED _NEW需要在新事务中执行,如果当前有事务,则该方法执行时会将该事务挂起,创建新事务
NOT_SUPPORTED不支持事务, 如果当前有事务,则该方法执行时会将该事务挂起,以非事务方式运行
NEVER不支持事务,如果当前有事务,则抛出异常
NESTED嵌套事务,如果当前事务存在,则嵌套执行,外层事务回滚时,会导致内层事务回滚。但是内层事务回滚时,不会引起外层事务回滚。如果当前不存在事务,则该配置等同于REQUIRED

推荐博客:https://blog.csdn.net/soonfly/article/details/70305683

posted @ 2021-04-02 17:40  layman~  阅读(21)  评论(0编辑  收藏  举报