1.6 springboot基础知识



1.概述

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

可以简单理解为,springboot是为了解决Spring 的配置烦琐、臃肿,并且在和各种第三方框架进行整合时代码量非常大,整合的代码重复的特别多的问题。

springboot可以让开发者快速上手,带来了全新的自动化配置解决方案,使用 Spring Boot 可以快速创建基于 Spring 生 产级的独立应用程序 。 Spring Boot 中对一些常用的第三方库提供了默认的 自动化配置方案,使得 开发者只需要很少的 Spring 配置就能运行一个完整的 Java EE 应用。 Spring Boot 项目可以采用传 统的方案打成 war 包,然后部署到 Tomcat 中运行。也可以直接打成可执行 jar 包,这样通过java -jar 命令就可以启动一个 Spring Boot 项目 。

根据其官方文档描述,其主要目的为:

  • 为所有的Spring开发提供一个根本性的更快、更广泛的入门体验。
  • 开箱即用,但随着需求开始偏离默认值,请迅速摆脱困境。
  • 提供一系列大类项目常见的非功能特性(如嵌入式服务器、安全、度量、健康检查和外部化配置)。
  • 绝对没有代码生成,也不要求XML配置。

最新的springboot 3.0.2-SNAPSHOT 需要 Java 17 ,并且可以兼容到Java 19,包括Java 19。还需要Spring Framework 6.0.3 或以上版本。

并且其支持tomcat,jetty,undertow嵌入式Servlet容器,而且对maven,gradle构建工具提供了明确的支持。

在这里插入图片描述

所以,使用Spring Boot框架,有以下的好处:

  • 帮助我们创建独立的Spring应用程序,简化了创建Spring应用程序的操作
  • 内置嵌入的Tomcat,无需我们自己手动部署WAR文件
  • 简化了Maven配置,省去了我们繁琐的操作
  • 自动配置Spring,不用手动对Spring项目进行配置文件的设置
  • 提供生产就绪型功能,如指标,健康检查和外部配置,并提供单元测试功能

2.使用SpringBoot

2.1 创建SpringBoot项目

springboot一般有俩种安装方式,一种是使用CLI(命令行工具)进行springboot项目构建,另一种是大多数情况下使用开发工具自动进行构建。

2.1.1 通过Spring Boot CLI构建

Spring Boot CLI(命令行界面)是一个命令行工具,我们可以用它来快速的建立Spring的原型。并且其允许运行Groovy 脚本,这意味着你有一个熟悉的类似Java的语法,而没有那么多的模板代码。

在没有IDE的情况下,我们才会考虑使用CLI来使用SpringBoot,它可以帮助我们快速构建一个新的springboot应用程序,当然其快速只是相对来说的,更多情况下,我们还是使用IDE来构建,使用IDE构建更加方便和快捷。

我们可以从Spring软件仓库下载Spring CLI发行版:

下载后,按照解压后的档案中的 INSTALL.txt 说明操作。在.zip文件的 bin/ 目录下有一个 spring 脚本(Windows的是 spring.bat )。或者,你可以使用 java -jar 来执行 .jar 文件(脚本可以帮助你确定classpath是否设置正确)。

安装完成后,我们可以通过构建程序来测试是否已正确安装完成,首先,创建一个名为 app.groovy的文件,如下所示:

@RestController
class ThisWillActuallyRun {
  @RequestMapping("/")
  String home() {
  "Hello World!"
  }
}

然后从shell运行它,如下所示:

$ spring run app.groovy

第一次运行因为要加载相关依赖的原因,所以会比较慢,需要耐心等待,成功运行后,在浏览器中打开 localhost:8080。 你应该看到以下输出。

Hello World!

2.1.2 通过IDEA构建

我们首先在IDEA中创建一个springboot项目,点击左上角的File–>Project后,根据下图设置相关内容:
在这里插入图片描述

点击NEXT后,在下个页面我们勾选Spring Web,勾选后创建项目会自动为我们下载web相关需要的依赖:
在这里插入图片描述

点击Create后并会正式创建我们的springboot项目,将进入项目页面,并会自动开始为我们下载相关依赖。

2.2 初始pom.xml文件详解

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--提供相关的Maven默认依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>springboot</description>
    <!--使用jdk8的版本-->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

上面是新创建SpringBoot项目后,初始的pom.xml文件,下面我们将对每一个模块进行介绍:

  <!--提供相关的Maven默认依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.11</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

此标签会帮助我们寻找spring-boot-starter-parent启动的父工程,spring-boot项目依赖此父工程进行版本管理,我们创建的工程都算作此父工程的子项目,我们的项目会依赖此父工程下载相关jar包的管理,并继承父工程的一些jar包。

    <groupId>com.example</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot</name>
    <description>springboot</description>

此处是对当前工程项目的描述,任何spring框架下的项目都会有类似的描述信息,这些信息是我们在创建项目时所输入的。

    <!--使用jdk8的版本-->
    <properties>
        <java.version>1.8</java.version>
    </properties>

此处标注我们使用版本为8的JDK版本,也是我们创建项目时所选择的jdk版本。此处还可以添加项目编码,输出文件编码,spring-boot项目的具体版本等信息。

    <dependencies>
        <!--标注项目已web方式构建,会使用springMVC构建我们的代码-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--标注项目支持单元测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

此处标注我们的项目已springMVC的方式构建,并支持单元测试,引入springMVC及单元测试相关的依赖项。

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

此处为我们添加的插件,其默认添加了maven.plugins插件,后期我们可以添加更多需要使用的插件来进行使用。

上面的这些依赖项,可能还依赖了其他的jar包,我们可以按住ctrl键点击查看,这时候,我们就可以更加深入的理解maven和springboot管理jar包创建项目的好处了,如果我们自己手动添加,那将是巨大的工程量。

2.3 添加需要的依赖

我们可以自行在工程内添加自己需要的依赖,下面我们添加mysql的jar包依赖,首先在dependencies标签内,鼠标右键选择Generate选项内的Dependency Template,会自动帮我们生成模板,在模板内输入mysql后自动提示相关依赖选项:
在这里插入图片描述
输入相关信息后,点击右上角的刷新按钮,便会帮我们下载所添加的jar包依赖:
在这里插入图片描述

2.4 启动服务器

在初始创建的工程目录下,已经存在一个自动创建的类,这个类就是启动类:
在这里插入图片描述

这个类中的代码十分简单:

package com.example.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootApplication {

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

}
  • @SpringBootApplication 是Sprnig Boot项目的核心注解,目的是开启自动配置,其是一个复合注解,包含了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan这三个注解;
  • @SpringBootConfiguration注解,继承@Configuration注解,主要用于加载配置文件,标注当前类是配置类, 并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名;
  • @EnableAutoConfiguration 注解,作用是开启自动配置功能,其可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置功效才得以大功告成;
  • @ComponentScan 注解,主要用于组件扫描和自动装配,其会自动扫描并加载符合条件的组件或bean定义,最终将这些bean定义加载到容器中。我们可以通过basePackages等属性指定@ComponentScan自动扫描的范围,如果不指定,则默认Spring框架实现从声明@ComponentScan所在类的package进行扫描,默认情况下是不指定的,所以SpringBoot的启动类最好放在root package下。
  • 在 Java 项目的 main 方法中,通过 SpringbootApplication 中的 main方法启动项目 。 第一个参数传入SpringbootApplication.class ,告诉 Spring 哪个是主要组件。第二个参数是运行时输入的其他参数。

我们选择运行当前启动类:
在这里插入图片描述

当控制台打印下列信息,即表示启动成功:
在这里插入图片描述

3.创建自定义类

我们在当前项目中创建自定义的类HelloWord.class,测试自定义资源的访问:
在这里插入图片描述

在类中定义get方法,来返回一句话:

package com.example.springboot;

public class HelloWord {
    public String get(){
        return "hello springboot!!";
    }

}

为了让启动类能获取到当前类里的方法,我们需要在类上添加@RestController注解,在方法上添加@RequestMapping注解,并在@RequestMapping注解中添加调用信息:

package com.example.springboot;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWord {
    @RequestMapping("helloSpring")
    public String get(){
        return "hello springboot!!";
    }

}

然后我们重新启动启动类来测试是否可以访问当前新创建的类,打开浏览器输入http://localhost:8080/+在@RequestMapping注解中添加调用信息来查看是否可以输出get方法返回的信息:
在这里插入图片描述

如上图,我们正确获取到了返回的信息,我们在自定义类中添加的注解,具体有什么作用呢?

  • @RestController 也是一个复合注解,其由@ResponseBody@Controller俩个注解组成,其作用是将方法返回的对象直接在浏览器上以json格式展示。
  • @ResponseBody注解让方法返回值作为响应内容,也就是将java对象转换为前端格式的json串返回到前端。与之对应的还有@RequestBody,其主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)。
  • @Controller注解主要用在控制器上,表明当前类为控制层代码,用来处理http请求。
  • @RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上,将 HelloWord类 注册到Spring MVC 容器中。

这些注解我们将在后续的学习中大量的学习使用,当前只需要大致理解其概念即可,在后续的使用中,可以深入的了解其作用。

在上面的案例中, @RestController 标注当前类为控制层类,其将方法返回的 “hello springboot!!” 字符串转换成json格式返回给浏览器,浏览器通过启动类的默认端口+ @RequestMapping 注解中提供的 “helloSpring” 接口,正确在Spring MVC 容器中寻找到要访问的资源,并展示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值