spring 面试题

1.spring是怎么处理二个有依赖关系的数据been

第一种,解决setter对象的依赖,就是说在A类需要设置B类,B类需要设置C类,C类需要设置A类,这时就出现一个死循环,

spring的解决方案是,初始化A类时把A类的初始化Bean放到缓存中,然后set B类,再把B类的初始化Bean放到缓存中,

然后set  C类,初始化C类需要A类和B类的Bean,这时不需要初始化,只需要从缓存中取出即可.

该种仅对single作用的Bean起作用,因为prototype作用的Bean,Spring不对其做缓存

第二种,解决构造器中对其它类的依赖,创建A类需要构造器中初始化B类,创建B类需要构造器中初始化C类,创建C类需要构造器中又要初始化A类,因而形成一个死循环,Spring的解决方案是,把创建中的Bean放入到一个“当前创建Bean池”中,在初始化类的过程中,如果发现Bean类已存在,就抛出一个“BeanCurrentInCreationException”的异常

1.你为什么用spring,spring是怎样提供事物管理的,然后spring ioc是怎么管理对象
  --因为好用,提供了很多功能封装,比如资源读取,事务管理,AOP切面,SpringMVC
  --所有的事务最终都是离不开Connection的,Spring有个TransactionManager对象, 有一个类似于Transaction对象(具体名子我忘记了),封装了Connection。 实际上开启事务,无非也就是connection.setAutoCommit(false)。 然后通过TransactionStatus  还有Properganation进行状态和传播性。其实自己写一个简单的事务管理也不是那么难,不信自己动手试试。。spring他考虑的更周到一些。

   --Ioc窗器,看上去层次那么多,其实在3.1之后的版本中,最终都是聚合DefaultListableBeanFactory来管理对象的,你可以进去看一下这个类的原码,他就是用了一个Map,里面存的是BeanDefine(也就是你的bean实体)。  

2.spring怎么管理对象之间的依赖关系的?spring的bean 工场是怎么样查找到bean对象的。  
    --- 已经在上一题中回答了。去看一下BeanDefine类,就知道了。怎么得到? 知道是Map,你说怎么得到列?

3.在你的项目中,spring是怎么样和其他的技术或者框架融合的?比如spring是怎么和struts,hibernate或者mybatis集成整合的?怎么配置,需要哪些关键的配置,或者注解。
    无非就是交所有的Bean交给spring ioc进行管理。  与Hibernate,mybatis集成,主要是事务那一块。然后数据库连接那块。   需要那些配置? 你问他能默写得出来不?最基本的有个packageToScan.指定扫描包。 然后数据源,事务,  mybatis就还有sqlFactoryBean  sqlSessionTempalte 之类的

4.
    spring aop 用过没?怎么用的,是在哪种场合下使用的spring aop的,spring aop 在你的应用中担任了什么样的角色或者说spring ioc 有哪些作用

   aop主要场景 ,比如事务,日志,权限,数据权限,代码跟踪调试 等。。。
原文地址:https://www.cnblogs.com/wjqhuaxia/p/9316499.html