Spring提供了IOC技术,容器会帮你管理依赖的对象,从而不须要本身建立和管理依赖对象,更轻松的实现程序的解耦。mysql
Spring提供了事务支持,使得事务操做变得根据方便。web
Spring提供了AOP(面向切面编程),这样能够更方便的处理某一类问题。spring
更方便的框架集成,Spring能够很方便的集成其余框架,好比Mybatis、Hibernate等。sql
AOP是面向切面编程,经过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。数据库
IOC就是控制反转,是Spring的核心,对于Spring框架来讲,就是由Spring来负责控制对象的生命周期和对象间的关系。编程
简单的说,控制指的是当前对象对内部成员的控制权,控制反转指的是,这种控制权不禁当前对象管理了,由其余(类,第三方容器)来管理。安全
Spring core:框架的最基础部分,提供IOC和依赖注入特性。session
Spring context:构建于core封装包基础上的context封装包,提供了一种框架式的对象访问方法。多线程
Spring dao:Data Access Object提供了JDBC的抽象层。mvc
Spring web:提供了针对web开发的集成特性,例如文件上传,利用servlet listeners进行IOC容器初始化和针对web的ApplicationContext。
Spring web mvc:Spring中的MVC封装包提供了web应用的Model-View-Controller的实现。
setter属性注入。
构造方法注入。
注解方式注入。
Spring中的bean默认是单例模式,spring框架并无对单例bean进行多线程的封装处理。
实际上大部分时候Spring bean无状态的(好比dao类),因此某种程度上bean也是安全的,但若是bean有状态的话(好比view model对象),那就要开发者本身去保证线程安全了,最简单的就是改变bean的做用域,把singleton变动成prototype,这样请求bean至关于new bean了,因此就能够保证线程安全。
有状态就是有数据存储功能。
无状态就是不会保存数据。
Spring支持五种做用域:
no:默认值,表示没有自动装配,应使用显式bean引用进行装配。
byName:根据bean的名称注入对象依赖项。
byType:根据类型注入对象依赖项。
构造函数:经过构造函数来注入依赖项,须要设置大量的参数。
autodetect:容器首先经过构造函数使用autowire装配,若是不能,则经过byType自动装配。
有两种实现方式:
脏读:表示一个事务可以读取另外一个事务中还未提交的数据。
不可重复读:表示一个事务内,屡次读取同一数据。
幻读:表示同一事务内屡次读取返回的结果集不同。
Spring有五大事务隔离级别:
前置控制器DispatcherServlet。
映射控制器HandlerMapping。
处理器Controller。
模型和视图ModelAndView。
视图解析器ViewResolver。
将http请求映射到相应的类或者方法上。
@Autowired注解它能够对类成员变量、方法、构造函数进行标注,完成自动装配的工做,经过@Autowired注解的使用来消除get、set方法。