1.4 Spring 中的新内容

Posted wpengch1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.4 Spring 中的新内容相关的知识,希望对你有一定的参考价值。

Spring 中的新内容

当本书第三版发布的时候,Spring最新的版本是3.0.5。三年时间过去了,Spring也有了许多变化。Spring发布了三个重量级的版本,3.1 3.2 和4.0,每一个版本都都来了新的变化,并且减轻了应用程序的开发。

1.4.1 Spring 3.1中的新变化

Spring 3.1中有几个有用的特性和改善,它集中在简化和改善配置上。另外,Spring 3.1 提供了声明式的支持以及Spring MVC的许多改进。下面是一个主要的列表:

  • 解决不同环境(如开发、测试和生产)的不同配置的共同问题,Spring提供了环境概括。配置文件使得不同的环境选择不同的配置成为可能,比如,根据是开发还是测试还是生产选择不同的数据源。
  • 增加了基于JAVA配置的几个注解
  • 声明式缓存的支持
  • 一个新的命名空间
  • Spring开始支持servlet3.0
  • 改善了JPA的支持,使其不再需要persistence。xml文件

Spring 3.1 也包含了几个Spring MVC的增强
- 对模型属性的路径变量进行自动绑定
- @RequestMappingproduces和consumes属性,对应request的 Accept和Content-Type头部
- @RequestPart注解
- 支持闪存属性和Redirect属性

Spring 3.2 新内容

Spring 3.2主要修改的是Spring mvc的内容,具体如下:

  • 支持Servlet3的异步请求方法,将请求分配到不同的线程中去
  • 更加方便的Spring mvc 的Controller 测试
  • 支持RestTemplate-based去发送请求到指定的端口,但是不是真正的发送
  • 一个@ControllerAdvice注解使得通常的@ExceptionHandler、@InitBinder和@ModelAttributes集中到一个单一的类中并且可以应用所有的到Controller上面。
  • 在3.2之前,全内容协商仅仅通过ContentNegotiatingViewResolver得到支持,但是在3.2中,Spring mvc中得到支持,甚至在Controller的方法中都得到支持。
  • 一个新的注解@MatrixVariable得到支持,它的主要目的是接受举证数据参数
  • 一个抽象基类AbstractDispatcherServletInitializer可以用来配置没有web.xml的DispatchServlet,比如,当你希望使用基于Java的配置使用,使用它的子类AbstractAnnotationConfigDispatcherServletInitializer 就可以了
  • ResponseEntityExceptionHandler被添加去替代DefaultHandlerExceptionResolver,它返回ResponseEntity ,而不是ModelAndView.
  • RestTemplate和@RequestBody参数支持泛型
  • RestTemplate和@RequestMapping方法支持Http的 PATCH方法
  • 映射翻译器支持URL模式

3.2总也有非Spring MVC的新内容,如下:

  • @Autowired、@Value和@Bean注解可以被用于元注解,而去创建一些自定义注入和声明式的Bean注解。
  • @DateTimeFormat不在强依赖于JodeTime,如果JodeTime存在的时候依赖于它,不存在的时候依赖于SimpleDateFormat.
  • Spring的声明式缓存已经支持到JCache 0.5了
  • 可以定义分析和渲染日期时间的全集格式
  • 集成测试,加载WebApplicationContext
  • 集成测试,可以测试request-和session-scoped的Bean

Spring 4.0中的新内容

Spring 4.0是Spring的最近可用版本,包含了许多激动人心的功能,如下:

  • Spring 现在支持WebSocket编程,包含支持JSR-356: Java Api for WebSocket.
  • WebSocket提供了低级别的实现,同时有一个高级别的流式抽象,Spring 4.0中包含一个基于WebSocket更加高级的,面向消息的编程模型,它是基于SockJS并且包含对STOMP的子协议支持。
  • 支持许多类型的新的消息传递模块,这个消息模块支持SockJS/STOMP,它也支持模板的消息发布。
  • Spring是第一批支持Java 8语法,包含Lambda的框架之一,这个使得回调接口的代码更加简洁与易读。
  • 伴随着Java8一起的还有JSR-310的支持,Date-Time API,它对日期时间的操作比Java.util.Date或者java.util.Calendar提供了更加丰富多样的API。
  • 对于开发者来说,增加了对Groovy的编程体验,尤其是,现在整个应用程序都可以使用Groovy进行开发,伴随这个而来的还有从Grail中带来的BeanBuilder,它使得Spring应用程序可以使用Groovy进行配置。
  • 对于条件Bean,提供了一般的支持。条件式Bean,就是只有当声明的条件满足的时候,才创建Bean
  • Spring 4.0也包含了一个对于Rest-Template的异步模块的实现,它支持立即返回,并在操作完成时进行回调。
  • 同时支持更多的JEE标准,如:JMS 2.0,JTA 1.2,JPA 2.1和Bean Validation 1.1

就像你所看到的,新版本的Spring框架带来了许多激动人心的功能,通过这本书,我们可以看到很多新
的特性,也可以看到很多在Spring中长期存在的特性。

1.5 总结

对于Spring带来的能力你现在应该有了一个大概的了解。Spring聚焦于简化Java的企业级开发并且使得代码能够尽量松散耦合。关键点就是DI和AOP。

在这一章中,你对DI有了一个大概的认识。DI是一种关联应用程序对象的方式,它使得对象不需要知道他所
依赖的东西怎么实现。由于依赖是通过依赖对象本身去注入的,所以对象往往只需要知道注入的接口就可以
了,而不需要知道其实现,这样就减少了代码的耦合。

除了DI,也对AOP有了大致的认识。AOP允许你将分散在应用程序中的逻辑几种到一个地方,这个地方就是切面。当Spring组装Bean的时候,它会将这些切面在运行时进行编译,并给Bean添加一些有用的新行为。

DI和AOP是Spring的核心,所以在理解Spring的接下来的功能之前,你需要理解这两个核心功能。在这一章,我们只是简单了解了DI和AOP。在下一章,我们会深入学习DI和AOP。

不要浪费时间,让我们翻到下一章。去学习使用Spring的DI进行对象的组装。

以上是关于1.4 Spring 中的新内容的主要内容,如果未能解决你的问题,请参考以下文章

使用spring最简单地读取properties文件中的内容

面试官都可能不清楚的 Spring AOP 内容

又被问了:Spring Boot 定时任务开启后,怎么符合条件自动停止?

面试官:谈谈你对 Spring AOP 的了解?请加上这些内容,绝对加分!

spring-boot 定时任务需要注意的地方

如何设计遵循 SOLID 的类而不在其他地方加载违反 SOLID 的内容?