Spring Boot 入门

时间:2022-07-26
本文章向大家介绍Spring Boot 入门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.1 Spring 分析

  Spring 框架是 Java 平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管 Spring 框架自身对编程模型没有限制,但其在 Java 应用中的频繁使用让它备受青睐,以至于后来让它作为 EJB(EnterpriseJavaBeans) 模型的补充,甚至是替补。Spring 框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的 Web 框架方便开发等等。

  随着使用 Spring 进行开发的个人和企业越来越多,Spring 也开始从一个简单的小框架逐渐发展为一个庞然大物。虽然 Spring 几乎能够完成任何事情,但是每当 Spring 集成一个开源软件,就需要额外增加一些配置,随着程序员开发的项目逐渐扩大,Spring 就需要集成更多开源软件,以至于在后期使用 Spring 开发大型项目时就需要引入海量配置文件,太多的配置不仅非常难以让人理解,而且非常容易配置出错,后来 Spring 被程序员们称为配置地狱。

  所有这些配置都代表了开发时的损耗。因为在思考 Spring 特性配置和解决业务问题之间需要进行思维切换,所以写配置挤占了写应用程序逻辑的时间。和所有框架一样,Spring 实用,但与此同时它要求的回报也不少。除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。

Spring Boot 让这一切成为了过去。

1.2 Spring Boot 概述

  Pivota(Pivota 介绍) 也意识到了这些问题,迫切需要有一套方案可以解决这些问题,与此同时微服务也逐渐兴起并急速发展,快速开发微小、独立的应用也变得更为迫切,Spring 刚好处在这么一个转折点上。Pivotal 公司提供了一种全新的框架 Spring Boot,它简化了 Spring 应用的初始搭建以及开发过程,只需要“run”就可以很容易创建一个个独立运行、准生产级别的 Spring 应用。 Spring Boot 并不是用来代替 Spring 的,而是与 Spring 框架紧密结合用来改善用户体验的工具。它还集成了大量常用的第三方库配置,Spring Boot 应用程序中的这些第三方库可以说是零配置的也就是说可以开箱即用,绝大多数的 Spring Boot 应用程序只需要编写非常少的 java 代码,这使开发人员能够将精力投入业务逻辑方面。

  因为 Spring Boot 使用了特定的方式来进行配置,所以开发人员不需要再定义格式化的配置。这种方法使 Spring Boot 在蓬勃发展的快速应用开发领域中独占鳌头。 Spring Boot 将很多魔法带入了 Spring 应用程序的开发之中,其中最重要的是以下四个核心。  ♞ 自动配置:针对很多 Spring 应用程序常见的应用功能,Spring Boot 能自动提供相关配置。  ♞ 起步依赖:告诉 Spring Boot 需要什么功能,它就能引入需要的库。  ♞ 命令行界面:这是 Spring Boot 的可选特性,你只需写代码就能完成完整的应用程序,无需传 统项目构建。  ♞ Actuator:让你能够深入运行中的 Spring Boot 应用程序,一探究竟。   Spring Boot 的出现,改变了 java 开发的困境,Spring Boot 最终奉行的宗旨:废除掉所有复杂的开发,废除掉所有的配置文件,让开发变得更简单纯粹,核心“零配置”。

自动配置   Spring Boot 会根据在类路径中的 jar 包、类,为jar包里的类自动配置 Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有场景,若在实际开发中,我们需要自动配置 bean,而 Spring Boot 没有提供支持,则可以自定义自动配置。

起步依赖   Spring Boot 通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个 Maven 项目对象模型,定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。很多起步依赖的命名都暗示了他们提供的某种或某类功能。

命令行界面   为了简便起见,Spring Boot 提供了命令行界面,可以用来运行和测试 Spring Boot 应用。

Actuator   Actuator 是 spring boot 项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过 restful api 请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。

1.3 创建一个 Spring Boot 项目

1.3.1 Maven

☞ 创建一个 Maven 项目

 此处不用选择骨架,点击 Next 下一步填写项目信息,填写完毕后点击 Finish 完成创建

☞ 添加依赖

<!-- SpringBoot 要求,项目要继承 SpringBoot 的起步依赖 spring-boot-starter-parent -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
</parent>

<dependencies>
	<!-- SpringBoot 要集成 SpringMVC 进行 Controller 的开发,所以项目要导入 web 的启动依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

☞ 编写引导类

 要通过 SpringBoot 提供的引导类起步 SpringBoot 才可以进行访问,这里就不再演示启动和访问了,下面一个再演示,都是一样的。

// 标注 SpringBoot 的启动类,该注解具备多种功能
@SpringBootApplication
public class App {
    public static void main(String[] args) {
    	//  代表运行 SpringBoot 的启动类,参数为 SpringBoot 启动类的字节码对象
        SpringApplication.run(App.class);
    }
}

1.3.2 Spring Initializr

 选择使用 Spring Initializr 创建项目(此种方式实际上都借助了 https://start.spring.io/ 这个网站),点击 Next 下一步填写相关信息

 再下一步,选择需要用到的依赖,这里只选一个 web,然后一路 Next 将项目创建完毕。

 会自动帮我们呢将之前选择的依赖导入,同时写好启动类。我们的业务逻辑写在 java 文件夹下,资源文件放到 resources 下。测试代码可以写道 test 文件夹下。

 写一个 controller 来看看 Spring Boot。懒得重新写一个 controller 了,直接把启动类改吧改吧,来访问看看效果。

@SpringBootApplication
@RestController
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/getMsg")
    public String getMsg() {
        return "Spring Boot!";
    }
}

 修改好之后直接启动(运行启动类即可),可以看到 Spring 的 logo,再下方可以看到使用的端口号,我们用这个端口访问一下写好的服务。