Spring面试笔记

1. Spring工做机制及为何要用?
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而建立的。Spring既是一个AOP框架,也是一IOC容器。
SpringFramework的组成:Spring AOP,Spring DAO,Spring ORM,Spring Web,Spring Context, Spring Web MVC。
Spring的核心就是IOC和AOP,因此Spring的工做机制简单的理解也就是IOC和AOP的工做机制。
借助于Spring AOP,Spring IoC可以很方便的使用到很是健壮、灵活的企业级服务,经过使用IoC可以下降组件之间的耦合度,最终,可以提升类的重用性,利于测试,并且更利于整个产品或系统集成和配置。
2. 说说AOP和IOC的概念以及在spring中是如何应用的?
AOP,Aspect Oriented Program,面向(方面)切面的编程;
IOC,Invert Of Control,控制反转。
简单说一下,IOC就是其实就是依赖注入,即用接口编程,在程序中不出现new关键字,而是用接口来命名引用,而后经过某种方式把接口的某个实现类的实例注入到引用里,从而实现接口与具体实现类的松耦合。
由容器控制程序之间的关系(经过XML配置),而非传统实现中的由程序代码直接操控,(在一个Class对象中引用另外一个Class对象时,咱们一般都是直接经过new contructor)。控制权由应用代码中转到了外部容器,控制权的转移,是所谓的反转。
AOP方式很相似filter,就是在程序正常的业务流中间像切面同样插入不少其余须要执行的代码,好比登陆时候,在进入登陆页面前写入日志,很经常使用的,尤为是跟数据库有关的,或者跟支付有关的程序确定会在每一步前面插入日志。
面向方面的编程,即 AOP,是一种编程技术,它容许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
AOP Advice(AOP通知)分为:
前置通知 后置通知 异常通知 环绕通知
3. Spring的事物有几种方式?谈谈spring事物的隔离级别和传播行为?
声明式事务 使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用以前决定是否开启一个事务,并在方法执行以后决定事务提交或回滚事务。
事务的隔离级别:
数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;
· Read Uncommitted 读未提交数据;(会出现脏读)
· Read Committed 读已提交数据;
· Repeatable Read 可重复读;
· Serializable 串行化
事务的传播属性包括:
· Required 业务方法须要在一个事务中运行,若是一个方法运行时已经处在一个事务中,那么加入到该事务,不然为本身建立一个新事务,80%的方法用到该传播属性;
· Not-Supported· Requiresnew· Mandatoky· Supports· Never· Nested
1、Spring MVC工做原理
1. 客户端请求提交到DispatcherServlet
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找处处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端
2、为何要用Spring
一、Spring能很好的与各大框架进行集成
二、建立对象时,若是咱们不用spring须要用工厂模式来建立,这个spring至关于工厂模式已经帮咱们作了建立对象的功能(IOC、依赖注入)。
三、在用Hibernate的时候,若是不用spring每次都要写事务的提交代码,有了spring能够经过AOP帮助咱们管理事务
四、面向切面编程(AOP)在要记录日志的时候添加一条记录后须要在数据里同时添加一条添加成功了或失败的记录,那么就能够用Spring的Aop来处理,虽然不用Aop也能作可是不用Spring的Aop就会写不少重复的代码。程序员

3、请你谈谈SSH整合
SSH:Struts(表示层)+Hibernate(持久层)+Spring(业务层)
a、Struts
Struts是一个表示层框架,主要做用是界面展现,接收请求,分发请求。
b、Hibernate
Hibernate是一个持久层框架,它只负责与关系数据库的操做。
c、Spring
Spring是一个业务层框架,是一个整合的框架,可以很好地黏合表示层与持久层。
4、介绍一下Spring的事务管理
事务就是对一系列的数据库操做(好比插入多条数据)进行统一的提交或回滚操做,若是插入成功,那么一块儿成功,若是中间有一条出现异常,那么回滚以前的全部操做。这样能够防止出现脏数据,防止数据库数据出现问题。
开发中为了不这种状况通常都会进行事务管理。Spring中也有本身的事务管理机制,通常是使用TransactionMananger进行管理,能够经过Spring的注入来完成此功能。
5、什么是依赖注入,依赖注入的做用是什么?
IOC是一种思想,它能指导咱们如何设计出松耦合、更优良的程序。传统应用程序都是由咱们在类内部主动建立依赖对象,从而致使类与类之间高耦合,难于测试;有了IOC容器后,把建立和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,因此对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得很是灵活
依赖注入的做用:减小类间耦合度,避免用new来建立对象
6、什么是AOP,AOP的做用是什么?
AOP,面向切面编程,就是把可重用的功能提取出来,而后将这些通用功能在合适的时候织入到应用程序中,好比事务管理、权限控制、日志记录、性能统计等。
AOP的做用
AOP并无帮助咱们解决任何新的问题,它只是提供了一种更好的办法,可以用更少的工做量来解决现有的一些问题,使得系统更加健壮,可维护性更好。
7、Spring中的BeanFactory与ApplicationContext的做用有哪些?
一、BeanFactory负责读取bean的配置文件,管理bean的加载、实例化,维护bean之间的依赖关系,负责bean的生命周期。
二、ApplicationContext除了提供上述BeanFactory所能提供的功能以外,还提供了更完整的框架功能:
a. 国际化支持
b. 资源访问
c. 事件传递spring

8、链接池
c3p0、dbcp数据库

9、跨库事务
Atomikos、jotm编程

相关文章
相关标签/搜索