Spring框架介绍

Spring 框架宗旨:不重复造轮子,让原有技术使用起来更加方便。

一、Spring模块

从Spring3开始,Spring进行了模块化,将原先的一个jar包拆分成很多个jar包,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。

Spring 框架(框架是一个半成品)提供约 20 个模块,,这些模块分为核心容器、数据访问/集成、Web、AOP、Instrumentation、消息和测试,可以根据应用程序的要求来使用,如下图所示:

核心容器

  核心容器由spring-core、spring-beans、spring-context、spring-context-support和spring-expression 5个模块构成。

  spring-core和spring-beans模块为框架提供最基本的功能,包括IoC和依赖注入。BeanFactory是一个工厂的实现类。它可以免除用户手动创建单例类并且对象之间解耦。

  context(spring-core)模块基于spring-beans和BeanFactory两个模块,允许以框架方式访问对象,这类似于JNDI。Context模块继承了Beans模块,并支持国际化、事件传播、资源加载等。Context模块支持Java EE特性,如EJB、JMX、远程访问。spring-context接口是Contet模块的重点。spring-context-support提供将第三方库集成到Spring的功能,如缓存(EhCache,JCache)和任务调度(CommonJ,Quartz)等。

  spring-expression模块提供强有力的在运行时查询和操作对象的语言。这种语言支持获取和设置属性、方法执行、获取数组或集合中的对象、逻辑计算、命名变量,在Spring的IoC容器中获得对象。

  核心容器是Spring 启动最基本的条件。

AOP 和 Instrumentation

  spring-aop模块提供切面编程的实现。可以自定义方法拦截和切入点。

  spring-aspects模块提供与AspectJ的集成。

  spring-instrument模块为特定的服务器提供类加载服务。spring-instrument模块是集成了Tomcat。

Data Access/Integration

  这一层由JDBC、ORM、OXM、JMS、和事物模块组成。

  spring-jdbc模块,主要为了解决数据库繁多的问题,应用此可不需要关注使用的数据库。

  spring-tx模块提供编程式或声明式事务处理。

  spring-orm模块提供流行的对象关系映射的APIs,包含JPA和Hibernate.

  spring-oxm模块提供对Object/XML映射的支持,例如JAXB,Castor,JiBX和XStream。

  spring-jms模块(Java消息服务)包含生成和消费消息的功能。在Spring4.1以后,它集成了spring-messaging模块。

Messaging(消息)

  Spring4提供了spring-messaging模块,主要类有Message,MessageChannel,MessageHandler。这个模块还包含一些映射消息到方法的注解,类似于Spring MVC基于编程模式的注解。

Web

  Web层包含spring-web、spring-webmvc和spring-websocket 3个模块。

  spring-web模块提供面向Web方法的集成特性,例如多部分文件上传、通过监听初始化IoC容器和面向Web的Context,还包含HTTP客户端和对远程的支持。

  spring-webmvc模块(也被称作Web-Servlet模块)包含Spring MVC框架。

  spring-websocket模块提供对socket的全面支持。

Test(测试)

  spring-test模块通过JUnit或者TestNG来对Spring的模块进行单元测试和集成测试。它提供一致的Spring 的ApplicationContexts 和context的缓存。它还提供mock对象让你测试你的代码。

二、Spring相关jar包

 org.springframework   

 spring-aop   

 基于代理的AOP支持   

 org.springframework   

 spring-aspects   

 基于AspectJ 的切面编程   

 org.springframework   

 spring-beans   

 Beans的支持, 包括 Groovy   

 org.springframework   

 spring-context   

 应用程序运行时上下文,包括调度和远程抽象   

 org.springframework   

 spring-context-support   

 提供第三方库到Spring的支持   

 org.springframework   

 spring-core   

 核心工具类,被其他模块使用   

 org.springframework   

 spring-expression   

 Spring 表达式语言 (SpEL)   

 org.springframework   

 spring-instrument   

 代理JVM相关的   

 org.springframework   

 spring-instrument-tomcat   

 Tomcat的插件   

 org.springframework   

 spring-jdbc   

 提供jdbc的支持,包括数据源和JDBC访问   

 org.springframework   

 spring-jms   

 JMS支持包,包括接收和发送消息类的支持   

 org.springframework   

 spring-messaging   

 对消息传递体系结构和协议的支持   

 org.springframework   

 spring-orm   

 对象/关系  映射, 拨快对JPA 和 Hibernate的支持   

 org.springframework   

 spring-oxm   

 对象/XML 映射的支持   

 org.springframework   

 spring-test   

 对Spring组件单元测试和集成测试的支持   

 org.springframework   

 spring-tx   

 事务支持,包块DAO支持和JCA集成   

 org.springframework   

 spring-web   

 Web 支持,包括客户端和Web访问   

 org.springframework   

 spring-webmvc   

 一个MVC框架   

 org.springframework   

 spring-websocket   

 WebSocket 和SockJS 的实现,包括对STOMP的支持   

三、Spring核心功能

IoC/DI :控制反转/依赖注入 
AOP:面向切面编程
声明式事务

四、Spring各版本的特性

Spring3.1
  • 添加了引入环境profile功能
  • 添加了@enable注解,使用特定功能
  • 添加了对声明式缓存的支持,能够使用简单的注解声明缓存边界和规则
  • 添加的用于构造器注入的c命名空间,类似与Spring2的p命名空间,用于对应属性注入
  • 开始支持Servlet3.0,包括基于java配置中生命Servlet和Filter,不再只仅仅借助web.xml
  • 改善对于JPA的支持,让JPA能在Spring中完整配置JPA,不必再使用persistence.xml文件
  • 自动绑定路径变量到模型属性中
  • 提供了@RequestMappingProduces和consumes属性,用于匹配请求中的Accept和Content-Type头部信息
  • 提供了@RequestPart注解,用于将Multipart请求中的而某些部分绑定到处理器的方法参数中
  • 持Flash属性,在redirect请求后依然能够存活的属性,flash属性的RedirectAttribute类型
  • 为支持原生的EntityManager,Spring的JpaTemplate和JpaDaoSupport类已被废弃了来支持JPA 2.0,并在spring4中移除了
Spring3.2
  • @Autowired.@Value和@Bean注解能够作为元注解,用于创建自定义的注入和bean声明注解
  • @DateTimeFormat注解不再依赖JodaTime.如果提供了JodaTime,就会使用它,否则的话,会使用SimpleDateFormat;
  • Spring的声明式缓存提供了对JCache0.5的支持
  • 支持定义全局的格式来解析和渲染日期和时间
  • 在集成测试中,能够配置和加载WebApplicationContext
  • 在集成测试中,能够针对request和session作用域的bean进行测试
Spring4.0
  • Spring提供了对WebSocket编程的支持,包括支持JSR-356--Java API for WebSocket
  • 鉴于WebSocket仅仅提供了一种低层次的API,急需高层次的抽象,因此Spring4.0在WebSocket之上提供了一个高层次的面向消息的编程模型,
  • 该模型基于SockJS,并且包含了对STOMP协议的支持
  • 新的消息模块,很多的类型来源于Spring Integration项目。这个消息模块支持Spring的SockJS/STOMP功能,同时提供了基于模板的方式发布消息
  • Spring是第一批支持Java8特性的Java框架,比如它所支持的lambda表达式,别的暂且不说,这首先能够让使用特定的毁掉接口更加简洁,代码更加易读
  • 与Java8 同时得到支持的是JSR-310--Date与Time API,在处理时间和日期时,他为开发者提供了java.util.Date或java.util.Calendar更丰富的API
  • 为Groovy开发的应用程序提供了更加顺畅的编程体验,尤其是支持非常便利地完全采用Groovy开发Spring应用程序。随这些一起提供的是来自于Grails
  • 的BeanBuilder,借助它能够通过Groovy配置Spring应用
  • 添加了条件化创建bean的功能,在这里只有开发人员定义的条件满足时,才会创建所声明的bean
  • Spring4.0包含了Spring RestTemplate的一个新的异步实现,它会立即返回并且允许在操作完成后执行回调
  • 添加了对多项JEE规范的支持,包括JMS2.0.JTA1.2.JPA2.1和Bean Validation1.1
Spring5.0

Spring Framework 5.0 新特性 (请关注常规升级,说明了一些工具要求的最低版本) 本系列教程以 5.1.16.RELEASE 版本进行说明。

官网:https://spring.io/projects/spring-framework#learn

说明文档:https://docs.spring.io/spring/docs/5.1.16.RELEASE/spring-framework-reference/

posted @ 2019-09-19 10:48  codedot  阅读(246)  评论(0编辑  收藏  举报