为什么学习Spring Boot

简介: Spring Boot 是 Spring 官方推出的快速开发框架,旨在简化配置、编码与部署。其“Build Anything”理念助力开发者快速搭建应用,配合 Spring Cloud 可构建完整微服务体系,是未来Java开发的重要趋势。

2.1 从Spring官方来看

我们打开 Spring 的官方网站,可以看到下图:  

我们可以看到图中官方对 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 相关达人课课程届时也会上线)。

2.2 从Spring Boot的优点来看

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

2.2.1 良好的基因

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

2.2.2 简化编码

举个例子,比如我们要创建一个 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 大大简化了我们的编码,我们不用一个个导入依赖,直接一个依赖即可。

2.2.3 简化配置

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即可。

2.2.4 简化部署

在使用 Spring 时,项目部署时需要我们在服务器上部署 tomcat,然后把项目打成 war 包扔到 tomcat里,在使用 Spring Boot 后,我们不需要在服务器上去部署 tomcat,因为 Spring Boot 内嵌了 tomcat,我们只需要将项目打成 jar 包,使用 java -jar xxx.jar一键式启动项目。

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

2.2.5 简化监控

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

2.3 从未来发展的趋势来看

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

相关文章
|
存储 运维 安全
云计算:优势与挑战
在数字化浪潮的推动下,云计算已经成为企业信息化建设的重要组成部分。本文将针对云计算的优势和劣势进行深入分析,旨在为读者提供全面的了解和参考。
2287 5
|
移动开发 Java 开发者
hbuilderx打包苹果证书获取步骤
目前app开发,很多企业都用H5框架来开发,而uniapp又是这些h5框架里面最成熟的,因此hbuilderx就成为了开发者的首选。然而,打包APP是需要证书的,那么这个证书又是如何获得呢? 生成苹果证书相对复杂一些,所以这里我重点说下ios证书的生成流程
741 0
|
5月前
|
API 知识图谱
快递预估价格查询-快递价格预估-快递价格查询-快递价格计算API接口介绍
快递价格预估API支持顺丰,京东,EMS,中通,圆通,申通,韵达,极兔,德邦等主流快递公司。输入起止地、重量体积,秒级返回预估运费。助力用户比价选最优方案(便宜/快速/上门),商家精准设置运费模板,避免亏损或流失客户。
583 0
|
人工智能 运维 JavaScript
通义灵码 SWE-GPT:从 静态代码建模 迈向 软件开发过程长链推理
在本文中,作者介绍了 Lingma SWE-GPT,一款专为解决复杂软件改进任务设计的开源大型语言模型系列。
1053 30
|
图形学
unity中Rigidbody添加力的几种方式
本篇就是添加力的几种方式,记录一下
|
存储 算法 Java
Java-数据结构(二)-Map:HashMap、TreeMap、LinkedHashMap
Java-数据结构(二)-Map:HashMap、TreeMap、LinkedHashMap
739 1
|
前端开发 Java 测试技术
SpringCloud Nacos配置中心
SpringCloud Nacos配置中心
1133 0
|
SpringCloudAlibaba 前端开发 Java
SpringBoot整合Nacos自动刷新配置
Nacos作为SpringBoot服务的注册中心和配置中心。 在NacosServer中修改配置文件,在SpringBoot不重启的情况下,获取到修改的内容。 本例将在配置文件中配置一个 cml.age=100 的配置项,程序中编写一个方法读取配置文件,并通过 Get--->/test/age 接口提供给浏览器访问。 若配置文件中的 age 修改为 200 ,不用重新启动程序,直接访问 /test/age 接口,将获取到最新的值 200 若配置文件中没有age 的配置项,或干脆没有 cml 的配置项,访问 /test/age 接口将返回默认的值 18
1838 0
|
监控 Java 开发者
Spring Cloud中的服务熔断与降级
Spring Cloud中的服务熔断与降级

热门文章

最新文章