Spring框架概述

Spring可以轻松创建Java企业应用程序。它提供了在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可根据应用程序的需要灵活地创建多种体系结构。从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并为JDK 11 LTS提供开箱即用的支持。

Spring支持广泛的应用场景。在大型企业中,应用程序通常存在很长时间,并且必须在升级周期超出开发人员控制范围的JDK和应用程序服务器上运行。其他人可能在嵌入服务器的情况下作为单个jar运行,可能在云环境中运行。还有一些可能是不需要服务器的独立应用程序(例如批处理或集成工作负载)。

Spring是开源的。它拥有一个庞大而活跃的社区,可根据各种各样的实际用例提供持续的反馈。这有助于Spring在很长一段时间内成功发展。

1.什么是spring

spring在不同的背景下意味着不同的东西。它可以用来引用Spring Framework项目本身,它就是一切开始的地方。随着时间的推移,其他Spring项目已经构建在Spring Framework之上。大多数情况下,当人们说“春天”时,他们就意味着整个项目家族。本参考文档侧重于基础:Spring Framework本身。

Spring框架分为几个模块。应用程序可以选择所需的模块。核心是核心容器的模块,包括配置模型和依赖注入机制。除此之外,Spring Framework还为不同的应用程序体系结构提供了基础支持,包括消息传递,事务数据和持久性以及Web。它还包括基于Servlet的Spring MVC Web框架,以及Spring WebFlux响应式Web框架。

关于模块的说明:Spring的框架jar允许部署到JDK 9的模块路径(“Jigsaw”)。为了在支持Jigsaw的应用程序中使用,Spring Framework 5 jar带有“Automatic-Module-Name”清单条目,它们定义了独立于jar工件的稳定语言级模块名称(“spring.core”,“spring.context”等)名称(罐子使用相同的命名模式,而不是“。”,例如“spring-core”和“spring-context”)。当然,Spring的框架jar在JDK 8和9+上的类路径上都能正常工作。

2. Spring的历史和Spring框架

Spring于2003年成立,是对早期J2EE规范复杂性的回应 。虽然有些人认为Java EE和Spring处于竞争中,但Spring实际上是对Java EE的补充。Spring编程模型不包含Java EE平台规范; 相反,它集成了EE保护伞中精心挑选的个别规格:

Spring Framework还支持依赖注入(JSR 330)和Common Annotations(JSR 250)规范,应用程序开发人员可以选择使用这些规范,而不是Spring Framework提供的Spring特定机制。

从Spring Framework 5.0开始,Spring至少需要Java EE 7级别(例如Servlet 3.1 +,JPA 2.1+) - 同时在Java EE 8级别提供与新API的开箱即用集成(例如,Servlet 4.0,JSON绑定API)在运行时遇到。这使Spring与Tomcat 8和9,WebSphere 9和JBoss EAP 7完全兼容。

随着时间的推移,Java EE在应用程序开发中的作用也在不断发展。在Java EE和Spring的早期,创建了应用程序以部署到应用程序服务器。今天,在Spring Boot的帮助下,应用程序以devops和云友好的方式创建,Servlet容器嵌入并且变得微不足道。从Spring Framework 5开始,WebFlux应用程序甚至不直接使用Servlet API,并且可以在不是Servlet容器的服务器(例如Netty)上运行。

Spring继续创新并不断发展。除了Spring Framework之外,还有其他项目,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等。重要的是要记住每个项目都有自己的源代码存储库,问题跟踪器和发布节奏。有关Spring项目的完整列表,请参见spring.io/projects

3.设计理念

当您了解框架时,重要的是不仅要知道它的作用,还要了解它遵循的原则。以下是Spring Framework的指导原则:

  • 提供各个层面的选择。Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置切换持久性提供程序,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。

  • 适应不同的观点。Spring拥抱灵活性,并不认为应该如何做。它以不同的视角支持广泛的应用需求。

  • 保持强大的向后兼容性。Spring的演变经过精心设计,可以在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。

  • 关心API设计。Spring团队花了很多心思和时间来制作直观的API,这些API在很多版本和多年中都有用。

  • 为代码质量设定高标准。Spring Framework非常强调有意义的,最新的和准确的javadoc。它是极少数项目之一,可以声称干净的代码结构,包之间没有循环依赖。

spring reference的更多相关文章

  1. Spring Boot Reference Guide

    Spring Boot Reference Guide Authors Phillip Webb, Dave Syer, Josh Long, Stéphane Nicoll, Rob Winch,  ...

  2. Spring系列:学习Spring的资源和讨论

    1) 阅读<spring in action 4th edition>,这样可以对的spring可以做什么事情有个基本了解: 2) 阅读spring.io官网提供的各种reference, ...

  3. spring mvc1

    DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好 ...

  4. [转载]新手入门:Spring的一些学习方法及意见

    原文地址:新手入门:Spring的一些学习方法及意见作者:飞扬飞扬xyz Spring简介: 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您 ...

  5. 基于Spring MVC的Web应用开发(三) - Resources

    基于Spring MVC的Web应用开发(3) - Resources 上一篇介绍了在基于Spring MVC的Web项目中加入日志,本文介绍Spring MVC如何处理资源文件. 注意到本项目的we ...

  6. Cross Site Request Forgery (CSRF)--spring security -转

    http://docs.spring.io/spring-security/site/docs/3.2.0.CI-SNAPSHOT/reference/html/csrf.html 13. Cross ...

  7. Spring AOP原理及拦截器

    原理 AOP(Aspect Oriented Programming),也就是面向方面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP将应用系统分为两部分,核心业务逻辑(Core bu ...

  8. Spring的AOP1

    引用:http://my.oschina.net/huangyong/blog/161338 是一个周末,刚给宝宝喂完牛奶,终于让她睡着了.所以现在我才能腾出手来,坐在电脑面前给大家写这篇文章. 今天 ...

  9. 40. Testing Prev Part IV. Spring Boot features

    40. Testing Spring Boot provides a number of utilities and annotations to help when testing your app ...

随机推荐

  1. 网络库压力测试:mongols VS evpp

    evpp是360出品的一个网络库,基于libevent,进行了许多改造,对c++11友好.据称比libevent性能要好. 到底有多好呢?360开发人员有自己的测试,信不信由你. evpp源码下有个h ...

  2. SpringCloud入门之应用程序上下文服务(Spring Cloud Context)详解

    构建分布式系统非常复杂且容易出错.Spring Cloud为最常见的分布式系统模式提供了简单易用的编程模型,帮助开发人员构建弹性,可靠和协调的应用程序.Spring Cloud构建于Spring Bo ...

  3. Java面试题整理---Redis篇

    1.redis支持五种数据结构类型?   2.redis内部结构?   3.redis持久化机制?   4.redis集群方案与实现?   5.redis为什么是单线程的?   6.redis常见回收 ...

  4. vue单文件组件实例1:简单单文件组件

    ​ HelloWorld.vue: <template> <div class="hello"> <h1>{{msg}}</h1> ...

  5. java中的getStackTrace和printStackTrace的区别

    getStackTrace()返回的是通过getOurStackTrace方法获取的StackTraceElement[]数组,而这个StackTraceElement是ERROR的每一个cause ...

  6. PHP中文转拼音

    网上大都讲的,都不支持繁体字,毕竟就是一个函数解决的事. 推荐一个很好的扩展,github地址: https://github.com/overtrue/pinyin 怎么用,自己去看就行了.

  7. windows下使用electron+sqlite3

    1.前置条件 1.1:安装 python2.7.python 若是有问题,如果之前安装过多个版本,则必须 npm config set python "/path/python.exe&qu ...

  8. NOIP 2018 划水记

    (此处不应有目录) (本来想咕掉这篇游记) Day -1 今天信心题,这个毒瘤出题人怎么出了一堆垃圾题(smallfat批判这个垃圾题). T2,T3是送分题.T1考了个noip根本不会考得类欧几里德 ...

  9. etcd 启动错误

    Apr 26 16:17:25 ceph-0 etcd: f281dc69fb4dd3d8 became candidate at term 3574Apr 26 16:17:25 ceph-0 et ...

  10. python第二天3.1

    算数运算符arithmetic operator: + - * / % % : 取余,取模.取的是第一个操作数和第二个操作数除法的余数.整除结果为0. 10 % 3              1 10 ...