一、Spring的特点
- Spring是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。
- Spring可以和其他的框架无缝整合;
- 方便解耦,简化开发;
- 对AOP的支持;
- 对声明式事务的支持;
- 方便集成各种优秀的框架;
1、轻量级
- 从大小和开销两方面而言Spring是轻量的;
- 完整的Spring框架可以在一个大小只有1M多的JAR文件里发布,并且Spring所需的处理开销也是微不足道的;
- Spring是非侵入式的,Spring应用中的对象不依赖于Spring的特定类;
2、控制反转
- Spring通过一种称作控制反转IOC的技术促进了低耦合;
- 当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者是查找依赖对象;
3、面向切面
- Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开;
4、容器
- Spring包含并管理应用对象的配置和生命周期;
- 在这个意义上说它是一种容器,你可以配置每一个你的Bean如何被创建;
- 基于一个可配置原型,你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的;
5、框架集合
- Spring可以将简单的组件配置,组合成为复杂的应用;
- 在Spring中,应用对象被声明式的组合,典型的是在一个XML文件中;
- Spring也提供了很多基础功能(事务管理、持久化框架集成等),将应用逻辑的开发留给开发者
二、Spring核心组件
核心组件
1、Beans
- Spring实际上就是面向Bean的编程,
- Bean组件在Spring的org.springframework.beans包下,主要是为了完成Bean的创建、Bean的定义以及Bean的解析;
- Spring Bean的创建时典型的就是工厂模式,BeanFactory的最终默认实现类是DefaultListableBeanFactory,它实现了所有的接口;
- Bean的定义主要由BeanDefinition描述,其完整的描述了在Spring配置文件中定义的节点的所有信息,包括子节点;
- Bean的解析主要是对Spring配置文件的解析,
2、Core
- 提供了框架的基本组成部分,包括IOC和依赖注入功能;
3、Context
- 建立在有Core和Bean模块提供的坚实基础上,他是访问定义和配置的任何对象的媒介,ApplicationContext接口是其重点;
4、SpEL
- 在运行时提供了查询和操作一个对象图的强大的表达式语言
数据访问/集成
5、JDBC
- 提供了删除冗余的JDBC相关编码的JDBC抽象层;
6、ORM
- 为流行的对象关系映射API,包括JPA,JDO,Hibernate和Ibatis提供了集成层;
7、OXM
- 提供了抽象层,支持对JAXB,Castor,XMLBeans,JIBX和XStream的对象/XML映射的实现;
8、Transactions
- 为实现特殊接口的类及所有的POJO支持编程式和声明式事务管理
9、JMS
- Java消息服务,包含生产和消费的信息的功能
Web页面
10、Web
- 提供了基本的面向web的集成功能,例如多个文件上传的功能和使用servlet监听器和面向web应用程序的上下文来初始化IOC容器;
11、Web-MVC
- 包含Spring的模型-视图-控制器(MVC),实现了web应用程序;
12、WebSocket
- 为WebSocket-based提供了支持,而且在web应用程序中提供了客户端个服务端之间通信的两种方式;
13、Portlet
- 提供了在portlet环境实现MVC,并且反映了Web-Servlet模块的功能的数据访问集成;
三、Spring常用模块
1.核心容器
- 核心容器提供Spring框架的基本功能,核心容器的主要组件是BeanFactory,它是工厂模式的实现;
- BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开;
2.Spring上下文
- Spring上下文是一个配置文件,向Spring框架提供上下文信息;
- Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能;
3.Spring AOP
- 通过配置管理特性,Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,可以将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性;
4.Spring DAO
- 为JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误信息;
- 异常层次结构简化了错误处理,并且极大的降低了需要撰写的异常代码数量(例如打开个关闭连接),Spring DAO的面像JDBC的异常从通用的DAO异常层次结构
5.Spring ORM
- Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map;所有这些都遵从Spring的通用事务和DAO异常层次结构
6.Spring Web模块
- Web上下文模块建立在应用程序上下文模块之上,为基础Web的应用程序提供了上下文;
- Spring框架支持与Jakarta Struts的集成;
- Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作
7.Spring MVC框架
- MVC框架是一个全功能的构建Web应用程序MVC实现,通过策略接口,MVC框架变成高度可配置的,MVC容器了大量视图技术,其中包括JSP、Velocity、Tiles、IText和POI;
四、Spring主要包
- org.springframework.core:Spring的核心工具包,其他包依赖此包;
- org.springframework.beans:所有应用都用到,包含访问配置文件,创建和管理bean等;
- org.springframework.aop:Spring的面向切面编程,提供AOP(面向切面编程)的实现;
- org.springframework.context:提供基础的IOC功能上的扩展服务,此外还提供了许多企业级服务的支持,有邮件服务,任务调度,JNDI定位,EJB集成,远程访问、缓存以及多种视图层框架的支持;
- org.springframework.mvc:包含SpringMVC应用开发时所需的核心类;
五、Spring常用注解
bean注入与装配的方式有很多种,可以通过xml,get和set方式,构造函数或者注解等;
1.@Controller
- 用于注解控制层组件;
- 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象;
- 分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解;
- 可以把Request请求header部分的值绑定到方法的参数上;
2.@RestController
- 相当于@Controller和@responseBody的组合效果
3.@Component
- 泛指组件,当组件不好归类时,我们就可以用它进行标注;
4.@Repository
- 用于注解DAO层,在DAOlmpl类上注解
5.@Service
- 用于标注业务层组件
6.@ResponseBody
- 异步请求
- 用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的Body数据区;
- 返回的数据不是html标签的页面,而是其他某种格式的数据时使用;
7.@RequestMapping
- 用来处理请求地址映射的注解,可用于类或者方法上;
- 用于类上,表示类中所有的响应请求的方法都是以改地址作为父路径;
8.@Autowired
- 可以对类成员变量、方法以及构造函数进行标注,完成自动装配的工作;
- 通过Autowired的使用来消除set、get方法;
9.@PathVariable
- 用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出URL模板中的变量作为参数
10.@requestParam
- 主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter(“name”)
11.@RequestHeader
- 可以将Request请求header部分的值绑定到方法的参数上