为何要学习 Spring Boot?

咱们知道,从 2002 年开始,Spring 一直在飞速的发展,现在已经成为了在Java EE(Java Enterprise Edition)开发中真正意义上的标准,可是随着技术的发展,Java EE使用 Spring 逐渐变得笨重起来,大量的 XML 文件存在于项目之中。繁琐的配置,整合第三方框架的配置问题,致使了开发和部署效率的下降。java

2012 年 10 月,Mike Youngstrom 在 Spring jira 中建立了一个功能请求,要求在 Spring 框架中支持无容器 Web 应用程序体系结构。他谈到了在主容器引导 spring 容器内配置 Web 容器服务。这是 jira 请求的摘录:web

我认为 Spring 的 Web 应用体系结构能够大大简化,若是它提供了从上到下利用 Spring 组件和配置模型的工具和参考体系结构。在简单的 main()方法引导的 Spring 容器内嵌入和统一这些经常使用Web 容器服务的配置。spring

这一要求促使了 2013 年初开始的 Spring Boot 项目的研发,到今天,Spring Boot 的版本已经到了 2.0.3 RELEASE。Spring Boot 并非用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提高 Spring 开发者体验的工具。同时它集成了大量经常使用的第三方库配置,Spring Boot应用中这些第三方库几乎能够是零配置的开箱即用(out-of-the-box),大部分的 Spring Boot 应用都只须要很是少许的配置代码(基于 Java 的配置),开发者可以更加专一于业务逻辑。tomcat

为何学习Spring Boot
从Spring官方来看
咱们打开 Spring 的官方网站,能够看到下图:安全

clipboard.png

图0:为何要学习Spring Boot?服务器

咱们能够看到图中官方对 Spring Boot 的定位:Build Anything, Build任何东西。Spring Boot旨在尽量快地启动和运行,而且只需最少的 Spring 前期配置。 同时咱们也来看一下官方对后面两个的定位:架构

SpringCloud:Coordinate Anything,协调任何事情;
SpringCloud Data Flow:Connect everything,链接任何东西。并发

仔细品味一下,Spring 官网对 Spring Boot、SpringCloud 和 SpringCloud Data Flow三者定位的措辞很是有味道,同时也能够看出,Spring 官方对这三个技术很是重视,是如今以及从此学习的重点(SpringCloud 相关达人课课程届时也会上线)。mvc

从Spring Boot的优势来看
Spring Boot 有哪些优势?主要给咱们解决了哪些问题呢?咱们如下图来讲明:app

clipboard.png

图1:为何要学习Spring Boot?

良好的基因
Spring Boot 是伴随着 Spring 4.0 诞生的,从字面理解,Boot是引导的意思,所以 Spring Boot 旨在帮助开发者快速搭建 Spring 框架。Spring Boot 继承了原有 Spring 框架的优秀基因,使 Spring 在使用中更加方便快捷。

clipboard.png

图2:为何要学习Spring Boot?

简化编码
举个例子,好比咱们要建立一个 web 项目,使用 Spring 的朋友都知道,在使用 Spring 的时候,须要在 pom 文件中添加多个依赖,而 Spring Boot 则会帮助开发着快速启动一个 web 容器,在 Spring Boot 中,咱们只须要在 pom 文件中添加以下一个 starter-web 依赖便可。

<dependency>

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>

</dependency>
咱们点击进入该依赖后能够看到,Spring Boot 这个 starter-web 已经包含了多个依赖,包括以前在 Spring 工程中须要导入的依赖,咱们看一下其中的一部分,以下:

<!-- .....省略其余依赖 -->
复制代码
<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>

</dependency>
<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.7.RELEASE</version>
<scope>compile</scope>

</dependency>
复制代码
由此能够看出,Spring Boot 大大简化了咱们的编码,咱们不用一个个导入依赖,直接一个依赖便可。

简化配置
Spring 虽然使Java EE轻量级框架,但因为其繁琐的配置,一度被人认为是“配置地狱”。各类XML、Annotation配置会让人眼花缭乱,并且配置多的话,若是出错了也很难找出缘由。Spring Boot更多的是采用 Java Config 的方式,对 Spring 进行配置。举个例子:

我新建一个类,可是我不用 @Service注解,也就是说,它是个普通的类,那么咱们如何使它也成为一个 Bean 让 Spring 去管理呢?只须要@Configuration 和@Bean两个注解便可,以下:

复制代码
public class TestService {

public String sayHello () {
    return "Hello Spring Boot!";
}

}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JavaConfig {

@Bean
public TestService getTestService() {
    return new TestService();
}

}
复制代码
@Configuration表示该类是个配置类,@Bean表示该方法返回一个 Bean。这样就把TestService做为 Bean 让 Spring 去管理了,在其余地方,咱们若是须要使用该 Bean,和原来同样,直接使用@Resource注解注入进来便可使用,很是方便。

@Resource
private TestService testService;
另外,部署配置方面,原来 Spring 有多个 xml 和 properties配置,在 Spring Boot 中只须要个 application.yml便可。

简化部署
在使用 Spring 时,项目部署时须要咱们在服务器上部署 tomcat,而后把项目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,咱们不须要在服务器上去部署 tomcat,由于 Spring Boot 内嵌了 tomcat,咱们只须要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目。

另外,也下降对运行环境的基本要求,环境变量中有JDK便可。

简化监控
咱们能够引入 spring-boot-start-actuator 依赖,直接使用 REST 方式来获取进程的运行期性能参数,从而达到监控的目的,比较方便。可是 Spring Boot 只是个微框架,没有提供相应的服务发现与注册的配套功能,没有外围监控集成方案,没有外围安全管理方案,因此在微服务架构中,还须要 Spring Cloud 来配合一块儿使用。

从将来发展的趋势来看
微服务是将来发展的趋势,项目会从传统架构慢慢转向微服务架构,由于微服务可使不一样的团队专一于更小范围的工做职责、使用独立的技术、更安全更频繁地部署。而 继承了 Spring 的优良特性,与 Spring 一脉相承,并且 支持各类REST API 的实现方式。Spring Boot 也是官方大力推荐的技术,能够看出,Spring Boot 是将来发展的一个大趋势。

免费Java资料领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring
Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
传送门: https://mp.weixin.qq.com/s/Jz...
相关文章
相关标签/搜索