笔试积累之java篇(四)

2017-11-26  本文已影响11人  大炮对着虫子
  1. ApplicationContext和BeanFactory有什么区别?
BeanFactory 实际上是实例化,配置,管理众多 bean容器。这些bean通常
互相依赖,其依赖关系通过配置反映。
而AppliacationContext是BeanFactory的子类,提供以编程的方式管理和操作bean组件的基本功能。
增强了BeanFactory的功能。创建一个ApplicationContext对象有以下几种方式:
1、ClassPathXmlApplicationContext:从类路径中的XML文件载入上下文定
义信息,把上下文定义文件当作类路径资源。
2、FileSystemXmlApplicationContext:从文件系统中的XML文件载入上下文定义信息。
3、XmlWebApplicationContext:从Web系统中的XMl文件载入上下文信息。

  1. Spring使用了哪些设计模式,这样用有什么好处?
工厂模式:spring容器是个大的工厂,管理着bean组件的生命周期.
单例模式:spring 的ioc动态反转,当spring容器初始化时,会实例化bean组件,单例,减少内存开销.
适配者模式:Spring 中AOP编程中,对Adapter的应用。

3、 解释下IOC

IOC控制反转,我们直接在对象内部通过new进行创建对象,
是程序主动去创建依赖对象;
而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;
即将查找和依赖对象的控制权交给了spring容器
这其实是利用 java的反射,在运行时,跟spring 的xml配置文件,动态去创建,调用对象,

4、spring事务的传播和隔离级别:

7种事务传播,4种隔离级别
事务的传播:规定了事务方法和事务方法 发生嵌套时,事务如何进行传播。
Propagation_Required:如果当前没有事务,就创建一个事务,如果已经存
在事务,就加入到这个事务中去。这是最常见的选择。

Propagation_Supports:支持当前事务,如果不存在事务,就以非事务的方式执行。
Propagation_Mandatory:使用当前的事务,如果当前没有事务,就抛出异常。
Propagation_Requireds_New :新建事务,如果当前存在事务,就把当前事务挂起。
Propagation_Not_Supported:以非事务的方式执行操作,如果当前存在事务,就把当前事务挂起。
Propagation_Never:以非事务方式执行,如果存在事务,则抛出异常。
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。
如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

1、Serializable:最严格的级别,事务串行执行,资源消耗最大; 
2、Repeatable Read:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。 
3、Read Committed:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。 
4、Read Uncommitted:保证了读取过程中不会读取到非法数据。

上一篇下一篇

猜你喜欢

热点阅读