当前位置: 移动技术网 > IT编程>开发语言>Java > 为什么要学习 Spring Boot?

为什么要学习 Spring Boot?

2019年02月27日  | 移动技术网IT编程  | 我要评论

我们知道,从 2002 年开始,spring 一直在飞速的发展,如今已经成为了在java ee(java enterprise edition)开发中真正意义上的标准,但是随着技术的发展,java ee使用 spring 逐渐变得笨重起来,大量的 xml 文件存在于项目之中。繁琐的配置,整合第三方框架的配置问题,导致了开发和部署效率的降低。

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

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

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

为什么学习spring boot

从spring官方来看

我们打开 spring 的,可以看到下图:

 

 
图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 相关达人课课程届时也会上线)。

从spring boot的优点来看

spring boot 有哪些优点?主要给我们解决了哪些问题呢?我们以下图来说明:

 

 
图1:为什么要学习spring boot?

 

良好的基因

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

 

 
图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/jzddfh-7ynudmkjt0irl8q

 

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网