0%

Spring Boot-入门

Spring Boot-入门

Spring Boot简介

  • 简化Spring应用开发的一个框架

  • 整个Spring技术栈的一个大整合

  • J2EE开发的一站式解决方案

微服务

2014年,martin fowler在博客中提出

微服务:架构风格(服务微化)

一个应用应该是一组小型服务;可通过HTTP的方式进行互通

每一个功能元素最终都是一个可独立替换和独立升级的软件单元

Spring Boot HelloWorld

一个功能:

浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串

  1. 创建一个maven工程

  2. 导入spring boot相关依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
    <relativePath/>
    </parent>

    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    </dependencies>
  3. 编写一个主程序,启动Spring Boot应用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
    * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
    */
    @SpringBootApplication
    public class HelloWordMainApplication {
    public static void main(String[] args) {
    // Spring 应用启动
    SpringApplication.run(HelloWordMainApplication.class,args);
    }
    }
  4. 编写相关Controller、Service

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Controller
    public class HelloController {

    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
    return "Hello World";
    }
    }
  5. 运行主程序

  6. 简化部署

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <!--    这个插件,可以将应用打包成一个可执行jar包-->
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>

    直接使用java -jar命令执行

Hello World探究

  1. POM文件

    1. 父项目

      1
      2
      3
      4
      5
      6
      <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.2.2.RELEASE</version>
      <relativePath/>
      </parent>

      它的父项目是:

      1
      2
      3
      4
      5
      6
      7
        <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.2.2.RELEASE</version>
      <relativePath>../../spring-boot-dependencies</relativePath>
      </parent>
      <!-- 用来真正管理Spring Boot应用里面的所有依赖版本-->

      Spring Boot的版本仲裁中心:

      以后导入依赖默认是不需要写版本的(没有在dependencies里面管理的依赖自然需要声明版本)

    2. 导入的启动器

      1
      2
      3
      4
      <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      </dependency>

      spring-boot-starter-web:

      • spring-boot-starter:spring-boot场景启动器,导入了web模块正常运行所依赖的组件

      Spring Boot将所有的功能场景都抽取出来,做成一个个starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。需要什么功能就导入什么场景的启动器

  2. 主程序类/主入口类

    • @SpringBootApplication:Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

      • @SpringBootConfiguration:SpringBoot的配置类,标注在某个类上,表示这是一个SpringBoot的配置类

        • @Configuration:配置类上来标注这个注解

          配置类---配置文件;

          配置类也是容器中的一个组件@Component

      • @EnableAutoConfiguration:开启自动配置功能

        需要配置的部分,Spring Boot自动配置,使用@EnableAutoConfiguration才能生效

        • @AutoConfigurationPackage:自动配置包
          • @Import({Registrar.class}):Spring的底层注解@import,给容器中导入一个组件;将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
        • @Import({AutoConfigurationImportSelector.class}):给容器中导入组件
          • AutoConfigurationImportSelector:导入哪些组件的选择器;将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类;就是给容器中导入这个场景需要的所有组件,并配置好这些组件;有了自动配置类,就免去了手动编写配置注入功能组件等工作

使用Spring Initializer快速创建SpringBoot项目

  1. 选择我们需要的模块,向导会联网创建Spring Boot项目
  2. 默认生成的Spring Boot项目
    • 主程序已经生成好了,我们只需要编写我们自己的逻辑代码
    • resources文件夹目录结构
      • static:保存所有的静态资源:js、css、images
      • templates:保存所有的模板页面:Spring Boot默认jar包使用嵌入式的tomcat,默认不支持jsp页面,可以使用模板引擎(freemarker、thymeleaf)
      • application.properties:Spring Boot应用配置文件 ,可以修改一些默认设置