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种):
- 原子性 (atomicity):事务不可分割,要么同时完成,要么同时失败。
- 一致性 (consistency):事务执行前后,数据应当保持一致的完整性。
- 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰 。
- 持久性(durability) :事务一旦结束,数据就会持久到数据库中。
隔离级别(4种):
隔离级别 | 说明 |
---|---|
Read-Uncommitted | 读未提交,脏读,不可重复读,虚读都有可能发生 |
read commited | 读已提交(Oracle数据库默认),避免脏读。但是不可重复读和虚读有可能发生 |
repeatable read | 可重复读(MySQL数据库默认),避免脏读和不可重复读,但是虚读有可能发生. |
serializable | 串行化,事务依次执行,可避免以上所有问题,但SQL效率低下 |
传播行为(7种):
传播行为 | 说明 |
---|---|
REQUIRED | 必须运行在事务中,如果没有事务,就新建一个。如果有,就加入该事务(默认) |
SUPPORTS | 支持事务,如果有事务,就在事务中执行,如果没有,就以非事务方式运行 |
MANDATORY | 必须运行在事务中,如果没有事务,就抛出异常 |
REQUIRED _NEW | 需要在新事务中执行,如果当前有事务,则该方法执行时会将该事务挂起,创建新事务 |
NOT_SUPPORTED | 不支持事务, 如果当前有事务,则该方法执行时会将该事务挂起,以非事务方式运行 |
NEVER | 不支持事务,如果当前有事务,则抛出异常 |
NESTED | 嵌套事务,如果当前事务存在,则嵌套执行,外层事务回滚时,会导致内层事务回滚。但是内层事务回滚时,不会引起外层事务回滚。如果当前不存在事务,则该配置等同于REQUIRED |