第02章 SpringBoot概述

15 篇文章 0 订阅
6 篇文章 0 订阅

序言

1.内容介绍

​ 本章介绍了SpringBoot的核心功能、优点、特征,同时对SpringBoot项目的构建、核心注解的使用进行一 一实战演练,为了提升日常SpringBoot项目的开发效率,引入了SpringBoot热启动的配置。

2.理论目标

  • 掌握SpringBoot的特点
  • 掌握SpringBoot的优点
  • 掌握SpringBoot项目目录结构

3.实践目标

  • 熟练创建SpringBoot项目
  • 熟练编写控制层Controller
  • 熟练进行SpringBoot热启动配置,提升调试项目的效率

4.实践案例

  • SpringBoot项目构建
  • SpringBoot核心注解实战

5. 内容目录

  • 1.SpringBoot初识
  • 2.SpringBoot初体验
  • 3.SpringBoot热启动

第1节 SpringBoot初识

1. 什么是SpringBoot?

  • 随着动态语言的流行(Ruby、Groovy、Scala、Node.js),Java 的开发显得格外的笨重,繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大。
  • 在上述环境下,Spring Boot 应运而生。它使用“习惯优于配置”(项目中存在大量的配置,此外还内置一个习惯性的配置,让你无须手动进行配置)的理念让你的项目快速运行起来。
  • 使用 Spring Boot 很容易创建一个独立运行(运行 jar,内嵌 Servlet 容器)、准生产级别的基于 Spring 框架的项目,使用 Spring Boot 你可以不用或者只需要很少的 Spring 配置。
  • Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

2. SpringBoot核心功能

  • 独立运行的 Spring 项目
    • Spring Boot 可以以 jar 包的形式独立运行,运行一个 Spring Boot 项目只需通过 java–jar xx.jar 来运行。
  • 内嵌 Servlet 容器
    • Spring Boot 可选择内嵌 Tomcat、Jetty 或者 Undertow,这样我们无须以 war 包形式部署项目。
  • 提供 starter 简化 Maven 配置
    • Spring 提供了一系列的 starter pom 来简化 Maven 的依赖加载,例如,当你使用了spring-boot-starter-web 时,会自动加入如图 1 所示的依赖包。
  • 自动配置 Spring
    • Spring Boot 会根据在类路径中的 jar 包、类,为 jar 包里的类自动配置 Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot 只是考虑了大多数的开发场景,并不是所有的场景,若在实际开发中我们需要自动配置 Bean,而 Spring Boot 没有提供支持,则可以自定义自动配置。
  • 准生产的应用监控
    • Spring Boot 提供基于 http、ssh、telnet 对运行时的项目进行监控。
  • 无代码生成和 xml 配置
    • Spring Boot 的神奇的不是借助于代码生成来实现的,而是通过条件注解来实现的,这是 Spring 4.x 提供的新特性。Spring 4.x 提倡使用 Java 配置和注解配置组合,而 Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

3. SpringBoot优点

  • 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
  • 内嵌Tomcat或Jetty等Servlet容器;
  • 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
  • 对主流开发框架的无配置集成。
  • 项目可独立运行,无须外部依赖Servlet容器。
  • 提供运行时的应用监控。
  • 极大地提高了开发、部署效率。
  • 与云计算的天然集成。

4. SpringBoot缺点

  • 版本迭代速度很快,一些模块改动很大。

  • 由于不用自己做配置,报错时很难定位。

第2节 SpringBoot初体验

SpringBoot 是 Spring 框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,一个典型的 SpringBoot 应用本质上其实就是一个基于 Spring 框架的应用.

1. 创建SpringBoot项目

需求:Idea构建项目

  • 选择“create new project”入口,选择"Spring Initializr"

  • 选择“Spring Initializr”,Next(输入项目名、包名,选择JDK版本)

  • 选择"Dependencies"
    • Web --> Spring Web
    • Template Engines --> Thymeleaf
    • 选择SpringBoot2.4.5版本

  • 选择项目存放位置,最后点击"finish"

2. 项目结构说明

  • src/main/java:程序开发以及主程序入口
    • SpringbootHelloApplication:是应用程序的主入口
  • src/main/resources:配置文件
    • static:静态资源文件目录(css、images、js等)
    • templates:自定义的html模板文件
  • src/test/java:单元测试程序
    • SpringbootHelloApplicationTests:自动生成的单元测试程序
  • pom.xml:
    • :是应用程序模型的版本
    • :SpringBoot父版本的配置信息
    • :包名
    • :项目名
    • :版本号
    • :应用名
    • :项目的描述信息
    • :项目的jdk版本、编码版本等配置信息
    • :项目依赖信息
      • spring-boot-starter-web:web模块依赖
      • spring-boot-starter-test:测试模块依赖
      • spring-boot-starter-thymeleaf:模板依赖
    • :插件的配置信息

3. 自定义HelloController实战

  • 创建子目录controller

  • 在目录controller中,创建HelloController.java文件

  • 编写HelloController.java程序

     

    @RestController public class HelloController { @RequestMapping(value="/hello") public String index(){ return "Hello World!"; } }

    @RestController:说明Controller里面的方法都以json格式输出

    @RequestMapping:标注url的API的请求

  • 启动主程序,并使用PostMan进行测试

4. 核心注解解析

4.1 @SpringBootApplication

@SpringBootApplication 是一个“三体”结构,实际上它是一个复合 Annotation:

 

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @Configuration @EnableAutoConfiguration @ComponentScanpublic @interface SpringBootApplication{...}

虽然它的定义使用了多个 Annotation 进行元信息标注,但实际上对于 SpringBoot 应用来说,重要的只有三个 Annotation,而“三体”结构实际上指的就是这三个 Annotation:

 

@Configuration @EnableAutoConfiguration @ComponentScan

每次都写三个 Annotation 显然过于繁琐,所以写一个 @SpringBootApplication 这样的一站式复合 Annotation

 

@SpringBootApplication SpringBootApplication{...}

4.2 @Configuration

@Configuration就是 JavaConfig 形式的 Spring IoC 容器的配置类使用的那个 @Configuration,既然 SpringBoot 应用骨子里就是一个 Spring 应用,那么,自然也需要加载某个 IoC 容器的配置,而 SpringBoot 社区推荐使用基于 JavaConfig 的配置形式,所以,很明显,这里的启动类标注了 @Configuration 之后,本身其实也是一个 IoC 容器的配置类。比如:

 

@Configuration @EnableAutoConfiguration public class DemoConfiguration { ... }

@Configuration 标注的 DemoConfiguration 定义其实也是一个普通的 JavaConfig 形式的 IoC 容器配置类。

4.3 @EnableAutoConfiguration

@EnableAutoConfiguration 也是借助 @Import 的帮助,将所有符合自动配置条件的 bean 定义加载到 IoC 容器.

@EnableAutoConfiguration 作为一个复合 Annotation,其自身定义关键信息如下:

 

@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(EnableAutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {...}

最关键是 @Import(EnableAutoConfigurationImportSelector.class),它借助 EnableAutoConfigurationImportSelector,@EnableAutoConfiguration 可以帮助 SpringBoot 应用将所有符合条件的 @Configuration 配置都加载到当前 SpringBoot 创建并使用的 IoC 容器。

4.4 @ComponentScan

@ComponentScan 的功能是自动扫描并加载符合条件的组件或 bean 定义,最终将这些 bean 定义加载到容器中。

开始实验

第3节 SpringBoot热启动

1. 热启动概述

  • 热启动在项目开发中非常重要
  • 使得SpringBoot对于编程调试能很好的进行支持
  • 使得修改之后的程序能实时生效

2. 热启动配置

  • 添加依赖配置

     

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>

  • 添加插件配置

     

    <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin>

  • 添加应用配置

    配置文件:application.yml

     

    spring: devtools: restart: enabled: true #设置开启热部署 additional-paths: src/main/java #重启目录 exclude: WEB-INF/** thymeleaf: cache: false

  • 启动测试

    • 效果:修改程序代码,不需要重启项目,则展示最新程序编译效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码的xiao摩羯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值