1. spring-绪论:Spring介绍

什么是Spring

定义: spring是java企业级开发中使用最广泛的框架,能使得java开发更快,更容易,更安全,更优雅。spring专注速度,简化和产品级, 是企业级应用开发一站式解决方案。

Java生态2020年报告

从报告中可看出超过60%的开发者在生产项目使用spring,且超过三分之二的用户使用Spring5。
服务端web框架方面,一半的人使用spring boot, 三分之一的使用spring MVC。

为什么需要学
  • 理由1: java生态丰富,是使用最广泛的框架,已发展为企业级开发一站式解决方案。学会它能更好的开发业务系统。

  • 理由2: spring是非常优秀的框架,学习它的架构和思想很有意义,能大大提高个人的技术水准。

  • 理由3:精通spring在面试中会非常加分,能得到理想中的Offer。

如何学好Spring
如何精通一个领域?
  • Chunk it up(切碎知识点)
    大的知识体系,分为小块,逐个学习。

  • Deliberate practicing(刻意练习)
    注重脉络联系,刻意练习;
    练习缺陷,弱点的地方;
    会有枯燥,不舒服的感觉

  • feed back(反馈)
    主动反馈:做leetcode练习,参与github项目,教别人
    被动反馈:如参与代码审查,被动学习知识,视频

理清技术体系,多看源码,多动手

spring的相关资料非常丰富,只要有心,遇到的任何问题,想了解的任意细节都能从网络上找得到。

常见的Spring参考资料
  • 第一手资料:spring官网

  • 优秀书籍
    《Spring 揭秘》

  • 优秀资料
    csdn博客:精通spring注解
    本专栏

spring体系
spring的历史
  1. 诞生背景
    spring起源于2002年Rod Johnson写的一本书《Expert one-on-one J2EE Development》, 在本书中指出JavaEE和EJB的缺陷,提出了一个基于普通的Java类和依赖注入的更简单的解决方案,编写了30000行的基础结构代码。当时项目的包目录为com.interface21,所以最初命名为interface21。

2003年Rod Johnson和同伴在此框架的基础上开发了一个全新的框架,命名为spring。
在这里插入图片描述

  • 2004 年 03 月,1.0 版发布。

  • 2006 年 10 月,2.0 版发布。

  • 2007 年 11 月,更名为 SpringSource,同时发布了 Spring 2.5。

  • 2009 年 12 月,Spring 3.0 发布。同年VMware以4.2亿美金收购springSource。后EMC收购了VmWare。

  • 2012年Rod Johnson离开springSource。

  • 2013年EMC,VMware和Pivotal Labs重新组成了新公司Pivotal。

  • 2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。

  • 2014年发布了Spring Boot

  • 2015年发布了Spring Cloud

  • 2017 年 09 月,Spring 5.0 发布

  • 2018年Pivotal在纽约上市

Pivotal简介:
成立于2013年4月,致力于改变世界构造软件的方式,提供PaaS平台及服务,相当于是软件行业的咨询公司,类似于thoughtworks。目前为止,财富100强中超过三分之一的企业使用Pivotal云原生平台。

pivotal最早可追溯到1989年的咨询公司Pivotal Labs,专注于敏捷开发,Google, Twitter都曾是Pivotal Labs的客户。
2012年的时候EMC收购了Pivotal Labs以及它的200名员工。
2013年拆分Pivotal核心业务,成立了Pivital Software,股东是EMC,Vmware和通用电气。
EMC,VMware分拆出Cloud Foundry, Privotal Labs, 大数据资源,成立新公司Pivotal。估值高达10.5亿美金。

spring背后公司发展史

  1. Spring1.0
    2004年3月24日诞生,版本:Spring Framework 1.0 final。源码结构:
    在这里插入图片描述
    在这里插入图片描述

第一个版本所有功能都集中在一个库中,如IOC, AOP, JDBC, ORM, SpringMVC。虽然还很简单,Rod Johnson定位非常好,spring不是做大而全,市面上好的框架能融合即可。所以第一版本当时流行的Struts, hibernate, ibatis, freemarker等都能轻松集成。

从树形结构图上可以看出:

  • 最底层是相关框架类,工具类和Ioc容器在core -> beans -> context
  • 上一层是aop: aop, aspectJ
  • 再上一层是:事务管理(transaction), dao(数据访问层), jdbc抽象层, 其他服务集成:jms, mail, quartz
  • webmvc: 集成struts, 自带的spring webmvc

Spring的出现彻底改变了我们开发企业级Java应用程序的方式。Spring的IOC, AOP意味着组件之间不再存在紧耦合,再也不用重量级的EJB了。深入了解spring的诞生背景可参考创始人Rod Johnson的著作《Expert one-on-one J2EE without EJB》,后面也会出一个关于它的专栏,深入学习创始人的思想和智慧。

核心功能:IOC, AOP, 声明式事务管理,jdbc template,hibernate/ibatis支持,集成quartz, webMVC。

  1. Spring2.0
    源码结构:
    在这里插入图片描述
    我们可以在配置里使用自定义的XML命名空间,更小,更简单易懂的配置文件让Spring更易使用。

  2. Spring2.5
    里程碑版本,拥有了更优雅的面向注解的依赖注入模型(@Component, @Autowired,@ComponentScan),以及面向注解的Spring MVC编程模型。不需要显式的声明应用程序组件了,也不需要再去继承某个基础的控制基类了。

  3. Spring3.0
    源码结构
    在这里插入图片描述
    重要特性。拥有了一套全新的基于Java的配置,即Java Config。 能取代xml配置。 在Spring3.1中,一系列以@Enable开头的注解进一步完善了这一特性。终于我们可以第一次写出没有任何XML配置的Spring应用程序了。

  4. Spring4.0
    源码结构:
    在这里插入图片描述

全面支持Java8,对条件配置提供了支持,支持范型注入,lazy延迟注入,根据应用程序的Classpath, 环境和其他因素,运行时决策将决定使用哪些配置,忽略哪些配置。支持servlet3.0。websocket。
在这里插入图片描述
6. Spring5.0

源码结构
在这里插入图片描述

主要特性:
在这里插入图片描述

  1. SpringBoot
    SpringBoot 的出现,大幅度减少配置,提高开发效率。 实现了自动配置,起步依赖,Actuator。Spring Boot提供了新的编程范式,能在最小的阻力下开发spring应用程序。

注:Spring Boot, Spring Cloud 相关版本内容另起专栏介绍,本专栏只专注Spring Framework

Spring生态

spring各子项目功能:
在这里插入图片描述

其中spring boot, spring cloud, spring security, spring session是重点需要掌握的。

spring framework包含的知识点

根据spring官网spring framework项目参考文档,对spring framework主要的知识点划分如下:

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, R2DBC, O/R Mapping, XML Marshalling.

Web Servlet
Spring MVC, WebSocket, SockJS, STOMP Messaging.

Web Reactive
Spring WebFlux, WebClient, WebSocket, RSocket.

Integration
Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Caching.

Languages
Kotlin, Groovy, Dynamic Languages.

章节介绍
  • spring 容器
    包含:
    spring容器注册Bean
    Bean生命周期管理
    属性注入
    SpEL
    Resources

    Events
    i18n
    AOP / AspectJ / Transaction
    spring 容器源码解读

  • Web Servlet
    spring webMVC, webSocket, Email, Scheduling, Caching

  • Web Reactive
    Spring WebFlux, WebClient

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值