Spring是现今Java开发人员最常用的框架,开发人员使用Spring来构建高性能的,易于测试的,可重用的代码。使用Spring,Java开发人员的效率极大提升。
什么是Spring?
这可能是一个面试时常问到,或入门的开发人员常问的问题,回答起来比较难。我刚开始学的时候,讲师说它有两大核心功能IOC和AOP,自己用了很久才能对这些概念理解的更清晰一点。
Spring是一个轻量级的框架,这里的轻量级不是说库或者类的大小,而是说Spring对我们的应用有很少的侵入作用,当我们不使用Spring的时候,只需改动很少我们的代码。使用Spring的时候,Spring也提供了很多的组件来加快我们的开发。
Spring特性
官方参考文档有提供各个版本新特性,这里列举大版本特性
4.x 版本新特性
参考New Features and Enhancements in Spring Framework 4.X
全面支持Java8.0
核心容器增强,添加@Description,提供@Conditional注解实现Bean条件过滤,@Lazy注解解决Bean延时依赖注入等
支持Groovy定义Bean,其类似于XML,但是比XML更加灵活
Web增强,支持Servlet 3.0,引入@RestController,AsyncTemplate进行客户端异步无阻塞请求
支持Websocket
测试的增强
5.x 新特性
参考What's New in Spring Framework 5.x
兼容Java 9
反应式编程模型
函数式编程
HTTP/2的支持
使用Junit5进行单元测试
对Kotlin支持
Spring技术架构
Spring 5按功能分为以下几个大模块:
Core: IoC container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP.
Testing: Mock objects, TestContext framework, Spring MVC Test, WebTestClient.
Data Access: Transactions, DAO support, JDBC, ORM, Marshalling XML.
Web Servlet: Spring MVC, WebSocket, SockJS, STOMP messaging.
Web Reactive : Spring WebFlux, WebClient, WebSocket.
Integration: Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Cache.
Languages : Kotlin, Groovy, Dynamic languages.
Spring的子项目则如下:Spring Projects列表
Spring Boot: 可以很容易的创建独立运行的Spring应用,内嵌Tomcat,Jetty或者Undertow, 提供生产级别的特性如metrics,健康检查和外部配置。
Spring Data: 提供统一的基于Spring的数据访问模型,Spring Data下针对不同的数据库提供了很多子的项目
Spring AMQP: 提供了高度抽象的模板,用于集成消息中间件
Spring Session: 提供API来管理用户的Session信息。
... 还有很多不同的项目
小结
Spring给开发者带来了很多便捷,它已经成为了Java开发人员必须要掌握的一项基本技能,这里主要是对Spring做一个概述,了解Spring的基本结构与所涉及的一些东西。