介绍一下Spring中的主要功能
- 
Spring有哪些优点?
- 轻量级:Spring在大小和透明性方面绝对属于轻量级的,基础版本的Spring框架大约只有2MB。
 - 控制反转(IOC):Spring使用控制反转技术实现了松耦合。依赖被注入到对象,而不是创建或寻找依赖对象。
 - 面向切面编程(AOP): Spring支持面向切面编程,同时把应用的业务逻辑与系统的服务分离开来。
 - 容器:Spring包含并管理应用程序对象的配置及生命周期。
 - MVC框架:Spring的web框架是一个设计优良的[web MVC框架],很好的取代了一些web框架。
 - 事务管理:Spring对下至本地业务上至全局业务(JAT)提供了统一的事务管理接口。
 - 异常处理:Spring提供一个方便的API将特定技术的异常(由JDBC, Hibernate, 或JDO抛出)转化为一致的、Unchecked异常。
 
 - 
Spring注入集合的几种方式
- 
<list>类型用于注入一列值,允许有相同的值。 - 
<set>类型用于注入一组值,不允许有相同的值。 - 
<map>类型用于注入一组键值对,键和值都可以为任意类型。 - 
<props>类型用于注入一组键值对,键和值都只能为String类型。 
 - 
 - 
Spring注入Bean的方式
- 设值注入(set方法)
 - 构造器注入
 - 工厂方法
 
 bean的自动装配
- 
自动装配的几种方式
- no:默认的方式是不进行自动装配,通过显式设置ref 属性来进行装配。
 - byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该bean的属性具有相同名字的bean。
 - byType::通过参数类型自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byType,之后容器试图匹配、装配和该bean的属性具有相同类型的bean。如果有多个bean符合条件,则抛出错误。
 - constructor:这个方式类似于byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。
 - autodetect:首先尝试使用constructor来自动装配,如果无法工作,则使用byType方式。
 
 开启注解装配
<context:annotation-config/>开启自动扫描
注解
SpringMvc
- 
SpringMvc和Struts2的区别 - 控制器的注解
 - 控制器中如何返回JSON
 - 控制器是不是单例的
 - 
@RequestMapping注解的作用 - 配置请求方式GET、POST
- 在
@RequestMapping注解里面加上method=RequestMethod.GET 
 - 在
 - 如何接受集合参数
 - 配置视图解析器
 - 配置文件上传
 
MyBatis
- 
#{}和${}的区别是什么? - xml除了insert和select、update之外,还有哪些标签
 - mybatis分页和分页插件的原理
 - 插入数据时返回主键
 - 动态sql