从此
文章
📄文章 #️⃣专题 🌐上网 📺 🛒 📱

为什么都在用 Spring?

🕗2019-08-04

现在Spring几乎成为了Java在企业级复杂应用开发的代名词,得益于Spring简单的设计哲学和其完善的生态圈,确实为廉颇老矣,尚能饭否的 Java 带来了“春天”,有很多同学刚接触Java就直接从Spring框架开始学习,导致产生了很多疑惑,甚至有很多同学只知道用Spring,并不了解其中的原理,例如:

  1. Spring框架为我们做了什么,没有Spring框架前我们的程序是什么样的?
  2. 为什么要把对象放在Spring容器里面,为什么我不能直接new对象?
  3. 为什么要把Sevlet交给Spring MVC管理,我自己写Sevlet处理HTTP请求不行吗?
  4. Spring为什么要封装这么多的 Template(JDBCTemplate,RestTemplate等……)它想要干什么?

Spring 生态遍地开发(SpringBoot,SpringCloud 等等),本篇文章不会深入探讨Spring 每个框架的实现细节,只会大概讲Spring Framework背后的设计理念和它为我们所做的事情,让大家知其然并知其所以然,可以在用 Spring 的时候能知悉底层和内部细节发生的事情,如果是对于 Spring Frameword 和其生态框架的细节有兴趣的同学可以在详尽的阅读官方的文档,https://spring.io/projects(这应该是我见过写的最好的技术文档之一)

Spring 为我们做了哪些事情?

Spring 全家桶框架众多,但主要的设计原则简单来说,离不开这几点:

下面拆开来说说这几点,为我们带来什么好处,最后探讨下,如果没有 Spring 用原生的 J2EE 我们的程序会变成什么样

先说说 Spring Framework 的核心功能,DI 依赖注入,AOP 面向切面编程

依赖注入也叫 IOC 控制反转,依赖注入是编程大师 Martin Fowler 提出来的,我个人比较喜欢依赖注入这个名词,感觉比控制反转更具有表达性,也更容易理解

那么依赖注入为我们做了什么 ?

那么 AOP 面向切面又为我们做了什么?

还为我们做了什么其他的事情?

以上等等功能,都是 Spring 框架为我们做处理的事情

当然 Spring 生态里还有非常多的框架来简化我们的日常开发,提高开发效率,常用的例如:

假如没有 Spring ?

让我们想象一下,假如没有 Spring,我们在做企业级应用开发会大概会发生什么事情?

以上,你是如何看待 Spring 带来的复杂性和提供的便利性?现在 Spring 体系也越来越庞大,貌似与它刚开始对抗 EJB 的时候所提出的轻量级,简单的设计原则开始背道而驰,关于这点你又是怎么评价呢?个人知识有限,不喜勿喷,欢迎发表评论和分享你的观点和看法。