美文网首页
找到三篇文章介绍spring的背景

找到三篇文章介绍spring的背景

作者: 低调_0c1d | 来源:发表于2018-12-07 00:25 被阅读3次

三篇文章地址

  1. 为什么要有Spring?
  2. 为什么要有Spring AOP?
  3. Spring历史版本变迁和如今的生态帝国

最后,这个博客也非常值得一看

Java后端技术

读后笔记

《为什么要有Spring?》

Spring发展历史

(1)初级阶段:使用Model1/Model2/三层模模型进行开发;
(2)中级阶段:使用EJB进行分布式应用开发,忍受重量级框架带来的种种麻烦;
(3)高级阶段:使用Spring春天带给我们的美好,但是还要忍受很多繁琐的配置;
(4)骨灰级阶段:使用Spring Boot,畅享“预定大于配置”带给我们的种种乐趣!

  1. Model1阶段:JSP大杂烩,jsp既包含展示页面的代码,又包含业务逻辑的代码。这种方式虽然写起来容易,但是代码耦合度极高,是的后期难以维护
  2. Model2阶段:抽取了Servlet层,提现了分层的思想,当时虽然号称适合于大型项目的开发,但是从当前角度来看早已过时。
  3. 使用EJB进行分布式应用开发,忍受重量级框架带来的种种麻烦;EJB就像鬼一样,只是听过,但是从来没有见过,传说EJB是一个相当重的框架,Rod大神也是对其种种质疑,随后编写了interface21框架,也就是后来的Spring

Spring产生前的问题

在没有Spring的时候,代码中充斥了大量的类的实例化,并且这些事例的生命周期随着方法结束而结束。这不能增加了开发的代价,需要大量的甚至重复的实例化代码,而且增加了GC回收的压力。
即使引入单利模式来避免大量的类的实例化,但是依然不能解决业务逻辑代码中掺杂大量的单例模式相同的代码。

Spring产生后的便利

Spring的思想就是将类的实例放入到一个池子中统一进行管理,这个池子负责实例的整个生命周期,Spring的IOC负责将这些实例以依赖注入的方式,注入到相应的业务逻辑代码中。

《为什么要有Spring AOP?》

以日志输出为痛点切入

在没有Spring AOP之前,如果在业务逻辑代码中加入日志输出的代码,首先需要消耗开发时间,其次代码重复容易造成开发人员的疲劳,最后日志代码耦合进业务代码中将导致后期难以维护。

动态代理的方式可以在方法的调用前后,“植入”通用的日志代码记录代码,这个过程就是“其实就是AOP中横切的过程,代理对象中在方法调用前后“植入”自己写的通用日志记录代码其实就是AOP中织入的过程!这个织入的代码也就是横切逻辑,织入代码的过程其实就是在原有的方法前后增强 原方法的过程!"

但是,动态代理的方式又需要代理的目标对象必须要实现一个接口,显然,这在实际应用中又是一个新的痛点,好在Spring在这里使用CGLib动态代理的方式实现了我们的这种诉求。CGLib采用底层的字节码技术,可以为一个类创建子类,在子类中采用方法拦截的技术拦截所有父类方法的调用并顺势的织入横切逻辑。

动态代理很重要!Spring AOP用到了动态代理,Spring事务管理用到了动态代理,MyBatis数据库连接池用到了动态代理,MyBatis创建Mapper用到了动态代理等等

《Spring历史版本变迁和如今的生态帝国》

Spring 目前的5个版本

spring1

2004年3月24日,spring1发布,这个版本的核心就是IOC和AOP,并且简单封装了其他多个框架,spring1的源码地址在github中没有,而是在spring.io

spring2

Spring 2.x增加对注解的支持,支持了基于注解的配置。

spring3

spring3 第一次将spring的源码托管到[github](https://github.com/spring-projects/spring-framework)中

spring4

Spring 4.x全面支持Java 8.0,支持Lambda表达式的使用,提供了对@Scheduled和@PropertySource重复注解的支持,提供了空指针终结者Optional,对核心容器进行增加:支持泛型的依赖注入、Map的依赖注入、Lazy延迟依赖的注入、List注入、Condition条件注解注入、对CGLib动态代理类进行了增强。

Spring 4.x还支持了基于Groovy DSL的配置,提高Bean配置的灵活性。

Spring 4.x开始,Spring MVC基于Servlet 3.0 开发,并且为了方便Restful开发,引入了新的RestController注解器注解,同时还增加了一个AsyncRestTemplate支持Rest客户端的异步无阻塞请求。

spring5

相关文章

网友评论

      本文标题:找到三篇文章介绍spring的背景

      本文链接:https://www.haomeiwen.com/subject/huhzcqtx.html