准Java全栈开发工程师

准Java全栈开发工程师

一、SpringBoot 简介

  • SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。
  • 我们在学习 Spring 的时候说过 Spring 框架是为了简化开发的,而 SpringBoot 是为了简化 Spring 开发的,由此可见,使用 SpringBoot 开发将会更加的方便简捷。
  • 那 SpringBoot 是如何简化开发的呢?我们以一个入门案例来说明。

二、SpringBoot 入门案例

1、创建项目

  • 我使用的 IDEA 版本偏低,可能页面会有些许不同,但是大体应该还是一致的。

【SpringBoot】快速入门-LMLPHP

  • 使用 Spring Initializr 需要保证在联网的情况,但是有时在联网时也无法成功创建,可以使用下述方式,将网址改为阿里云的,我就是第一种方式怎么也创建不了,改用阿里云之后就可以了。

【SpringBoot】快速入门-LMLPHP
【SpringBoot】快速入门-LMLPHP

  • 因为我们是进行 Web 开发,所以我勾选了 Spring Web。之后还可以勾选一些比较使用的开发工具等。

【SpringBoot】快速入门-LMLPHP

  • 为项目命名。

【SpringBoot】快速入门-LMLPHP

  • 点击 Finish 创建成功后,项目结构如下图所示。
    【SpringBoot】快速入门-LMLPHP

2、编写 Controller 类

  • 先抛开实体类、数据访问层和业务逻辑层等内容,我们直接简单测试一下表现层。
@RestController
@RequestMapping("users")
public class UserController {
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id ==> " + id);
        return "{'msg':'qdxorigin'}";
    }
}
  • 上述代码采用了 REST 风格开发,简单模拟根据 ID 查询信息。

3、启动项目

  • 能够明显看到 Spring 的图像,且在加载信息中看到了和 tomcat 相关的内容,但是我们并没有配置 tomcat 啊?这就是 SpringBoot 更方便的一点,它内部自己给我们配置了 tomcat ,我们之后都无需再自己配置 tomcat 了。

【SpringBoot】快速入门-LMLPHP

4、使用 Postman 测试

【SpringBoot】快速入门-LMLPHP

  • 与此同时,控制台也获取到了 ID 值。
    【SpringBoot】快速入门-LMLPHP

三、SpringBoot VS Spring?

  • 通过练习入门案例,我们发现了,SpringBoot 内部会给我们配置 tomcat ,我们无需再自己配置。
  • 除此之外,在之前的 SSM 开发中,我们会自己在 pom.xml 文件中手动配置许多依赖,但是在 SpringBoot 中我们并没有修改 pom.xml 文件中的任何内容,仅仅在创建项目的时候勾选了 Spring Web,使得 SpringBoot 将我们需要的依赖配置好了。
  • 在整合 SSM 时,我们还手动书写了许多的配置类,但是 SpringBoot 中这些内容统统都不需要我们自己配置了。
  • SpringBoot 还有许多非常便捷的地方,目前较为明显的是上述三个优化。

【SpringBoot】快速入门-LMLPHP

四、在官网中构建工程

  • 进入官网, 官网地址 。划到后面,找到下图,点击 Spring Initializr (有没有感觉很熟悉,在 IDEA 创建项目时是不是也是这个)。
    【SpringBoot】快速入门-LMLPHP
  • 看到下图,有没有感觉和我们使用 IDEA 创建项目时遇到的非常相似啊。其实使用 IDEA 工具创建也会走这一套流程。

【SpringBoot】快速入门-LMLPHP

  • 在右边区域添加依赖,搜索选择添加的依赖。

【SpringBoot】快速入门-LMLPHP

  • 同样会在下面呈现所选择的依赖。
    【SpringBoot】快速入门-LMLPHP
  • 全部都完成之后,点击 GENERATE 创建项目。

【SpringBoot】快速入门-LMLPHP

  • 创建完成之后会生成一个压缩包,我们可以解压之后,导入 IDEA 中开发使用。
    【SpringBoot】快速入门-LMLPHP
  • 通过浏览压缩包中内容会发现和我们通过 IDEA 创建的项目结构是一模一样的。

五、打包 SpringBoot 项目

  • 在 pom.xml 文件中,提供有如下插件,所以我们可以使用 Maven 的 package 指令打包,完成后会在 target 目录下生成对应的 jar 包。

【SpringBoot】快速入门-LMLPHP
【SpringBoot】快速入门-LMLPHP
【SpringBoot】快速入门-LMLPHP
【SpringBoot】快速入门-LMLPHP

  • 此时,在 target 文件夹中已经能够看到 jar 已经打包好了,如果前端人员需要,可以将打包好的 jar 包拷贝给他,他可以直接运行调试自己的前端代码。
  • 前端人员拿到 jar 包后,在该位置输入 cmd 进入我们常说的小黑框。

【SpringBoot】快速入门-LMLPHP

  • 输入 java -jar 命令。

【SpringBoot】快速入门-LMLPHP

  • 有没有感觉到一些熟悉,没错,这和我们在 IDEA 中呈现的效果是一样的。
  • 此时我们就可以访问项目的所有资源了。

六、SpringBoot 是如何实现简化开发的?

  • 前面说过,SpringBoot 是可以简化 Spring 应用开发的,通过入门案例我们也能够明显的感觉到使用 SpringBoot 框架开发的便利,那么它是如何简化开发的呢?
  • 这其中就不免需要介绍两个非常重要的内容。

1、启动依赖

  • 通过查看 pom.xml 文件中的代码,我们不难发现有许多命名为 starter 的依赖。

【SpringBoot】快速入门-LMLPHP

  • 这些依赖中又引用了许多其他 starter 依赖。

【SpringBoot】快速入门-LMLPHP

  • 这也就告诉我们,在 SpringBoot 项目中,如果想要使用某个技术,直接导入相应的 starter 依赖就可以了,配置所需要的内容在该 starter 依赖中都有,给我们节省了很大一部分精力。

2、引导类

  • 当工程创建完成后,都会自动提供一个引导类,该类是程序启动的入口,当我们想要自动程序时,直接运行 main 方法即可。
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
  • 正式因为有了这些启动依赖和引导类,我们就能够专注于业务代码,而无需对一些配置工作而耗费精力,简化开发。

七、切换 Web 服务器

  • 通常情况下,我们都会使用 tomcat 作为项目的服务器,但是如果某天我们想要切换自己的服务器,该如何操作呢?
  • 在此以切换为 jetty 服务器为例简单演示下如何操作。
  • 第一步,我们需要将 starter 依赖中自动配置的 tomcat 服务器排除掉,使其失效。
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  • 此时我们再启动工程,会发现打印的信息中找不到和 tomcat 相关的了。

【SpringBoot】快速入门-LMLPHP

  • 第二步,导入 jetty 依赖。
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>
  • 此时,再次启动项目,看到了 jetty 相关打印信息,说明已经成功切换了服务器。
    【SpringBoot】快速入门-LMLPHP
06-20 09:32