1. 为何使用Spring ?前端
1). 方便解耦,简化开发web
经过Spring提供的IoC容器,能够将对象之间的依赖关系交由Spring进行控制,避免硬编码所形成的过分程序耦合。spring
2). AOP编程的支持数据库
经过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记录等。编程
3). 声明式事务的支持session
4). 方便集成各类优秀框架mvc
5). 下降Java EE API的使用难度app
如对JDBC,JavaMail,远程调用等提供了简便封装框架
2. 什么是IoC,为什使用IoC ?jsp
IoC全称Iversion of Controller,控制反转。
这概念是说你不用建立对象,而只须要描述它如何被建立。你不在代码里直接组装你的组件和服务,可是要在配置文件里描述哪些组件须要哪些服务,以后一个容器(IOC容器)负责把他们组装起来。
它能指导咱们如何设计出松耦合、更优良的程序。
3. 什么是AOP,为何使用AOP ?
AOP全称:Aspect-Oriented Programming,面向切面编程。
AOP,面向切面编程,就是把可重用的功能提取出来,而后将这些通用功能在合适的时候织入到应用程序中,好比事务管理、权限控制、日志记录、性能统计等。
AOP并无帮助咱们解决任何新的问题,它只是提供了一种更好的办法,可以用更少的工做量来解决现有的一些问题,使得系统更加健壮,可维护性更好。
4. 什么是Spring的事务管理?
事务就是对一系列的数据库操做(好比插入多条数据)进行统一的提交或回滚操做,若是插入成功,那么一块儿成功,若是中间有一条出现异常,那么回滚以前的全部操做。这样能够防止出现脏数据,防止数据库数据出现问题。
开发中为了不这种状况通常都会进行事务管理。
Spring的声明式事务一般是指在配置文件中对事务进行配置声明,其中包括了不少声明属性,它是经过Spring Proxy帮你作代理,本身不用额外的写代码,只要在Spring配置文件中声明便可;一般用在数据库的操做里面;
编程式事务就是指经过硬编码的方式作事务处理,这种处理方式须要写代码,事务中的逻辑能够本身定制;能够是数据库的东东,也能够是其余的操做。
Spring中也有本身的事务管理机制,通常是使用TransactionMananger进行管理,能够经过Spring的注入来完成此功能。
5. Spring框架支持如下五种bean的做用域:
singleton : 默认值,bean在每一个Spring ioc 容器中只有一个实例。
prototype:一个bean的定义能够有多个实例。
request:每次http请求都会建立一个bean,该做用域仅在基于web的Spring ApplicationContext情形下有效。
session:在一个HTTP Session中,一个bean定义对应一个实例。该做用域仅在基于web的Spring ApplicationContext情形下有效。
global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该做用域仅在基于web的Spring ApplicationContext情形下有效。
6. 什么是Spring的MVC框架?
Spring 配备构建Web 应用的全功能MVC框架。Spring能够很便捷地和其余MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也容许以声明的方式把请求参数和业务对象绑定。
spring mvc是一个基于mvc的web框架。spring mvc是spring框架的一个模块,springmvc和spring无需经过中间整合层进行整合。
7. 如何启用注解:
<context:annotation-config/>
若是使用<context:component-scan base-package="com.tgb.web.controller.annotation"> </context:component-scan> 则上面内容能够省略
8. Spring MVC的请求流程:
第一步:发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping查找Handler能够根据xml配置、注解进行查找
第三步:处理器映射器HandlerMapping向前端控制器返回Handler
第四步:前端控制器调用处理器适配器去执行Handler
第五步:处理器适配器去执行Handler
第六步:Handler执行完成给适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
第十一步:前端控制器向用户响应结果