SpringBoot重要知识点及面试点--第一篇

本文介绍了SpringBoot的基本概念,详细讲解了如何在不同网络环境下搭建SpringBoot环境,包括联网情况下的创建步骤、官网访问受限时的解决方案以及无网环境下的手动配置。此外,还涵盖了请求参数的处理、starter的作用、引导类、内嵌服务器替换和基础配置,以及YAML文件的使用。
摘要由CSDN通过智能技术生成

目录

什么是Springboot?

搭建Springboot环境

方法一:联网情况下

方法二:倘若spring官网也不能访问,怎么创建工程

方法三:电脑不能联网,该如何创建工程

SpringBoot请求参数的处理

简单参数

实体参数

数组集合参数

日期参数

JSON参数

路径参数

parent

starter--起步依赖

格式:

引导类

更换内嵌的Tomcat服务器

SpringBoot基础配置

配置日志输入

预编译SQL

参数占位符

yaml文件

语法格式:

读取单一数据

读取全部数据


什么是Springboot?

SpringBoot是 Spring 开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手

搭建Springboot环境

方法一:联网情况下

该步骤需要在联网的环境下,假如idea不能联网,也可以通过spring官网创建工程,idea创建Springboot工程其实连接的还是springboot官网,读取到spring官网的信息,然后展示到idea中。

步骤①:创建新模块,选择Spring Initializr,并配置模块相关基础信息。

步骤②:选择当前模块需要使用的技术集

方法二:倘若spring官网也不能访问,怎么创建工程

创建工程时,切换选择starter服务路径,然后手工收入阿里云提供给我们的使用地址即可。地址:http://start.aliyun.comhttps://start.aliyun.com

方法三:电脑不能联网,该如何创建工程

该步骤仅仅对于创建工程不用联网,具体的坐标如果仓库没有,也需要联网下载

步骤①:创建工程时,选择手工创建Maven工程

步骤②:参照标准SpringBoot工程的pom文件,手工导入坐标依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.10</version>
    </parent>

    <groupId>com.itheima</groupId>
    <artifactId>springboot_01_04_quickstart</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

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

SpringBoot请求参数的处理

简单参数

在Springboot的环境中,对原始的API进行了封装,接收参数的形式更加简单。 如果是简单参数,参数名与形参变量名相同,定义同名的形参即可接收参数。

@RestController
public class RequestController {
    // http://localhost:8080/simpleParam?name=Tom&age=10
    // 第1个请求参数: name=Tom   参数名:name,参数值:Tom
    // 第2个请求参数: age=10     参数名:age , 参数值:10
    
    //springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致
        System.out.println(name+"  :  "+age);
        return "OK";
    }
}

实体参数

@RequestParam中的required属性默认为true(默认值也是true),代表该请求参数必须传递,如果不传递将报错,如果赋了value值,则传递的参数必须是其别名

@RestController
public class RequestController {
    // http://localhost:8080/simpleParam?name=Tom&age=20
    // 请求参数名:name

    //springboot方式
    @RequestMapping("/simpleParam")
    public String simpleParam(@RequestParam("name") String username , Integer age ){
        System.out.println(username+"  :  "+age);
        return "OK";	
    }
}
@RestController
public class RequestController {
    //实体参数:简单实体对象
    @RequestMapping("/simplePojo")
    public String simplePojo(User user){
        System.out.println(user);
        return "OK";
    }
}

数组集合参数

多个值是怎么提交的呢?其实多个值也是一个一个的提交。后端接收上述多个值的方法有两种,一种是集合一种是数组。

用数组接收多个不同值

用集合接收多个不同值,用@RequestParam 绑定参数关系

日期参数

因为日期格式不统一,所以在传输时会出现格式不统一的问题,那么controller在接收时可以使用注解@DateTimeFormat注解来约束格式

JSON参数

JSON格式的数据是放在请求体中传输。接收和发送JSON的数据需要使用注解@RequestBody和@ResponseBody来发送。

@RestController
public class RequestController {
    //JSON参数
    @RequestMapping("/jsonParam")
    public String jsonParam(@RequestBody User user){
        System.out.println(user);
        return "OK";
    }
}

路径参数

在现在的开发中,经常还会直接在请求的URL中传递参数。例如:

http://localhost:8080/user/1        
http://localhost:880/user/1/0

parent

springboot官方将所有的技术版本的常见使用方案都整理起来,开发者以后直接使用它提供的方案,就不用担心版本冲突问题了。parent仅仅帮助我们做了依赖管理,并不帮助导入坐标

springboot如何做到这一点?

项目中的pom.xml中继承了一个坐标,打开之后发现,其又继承了另一个坐标,这个坐标中定义了两组信息,第一组是各式各样的依赖版本号属性,第二组是各式各样的的依赖坐标信息

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
</parent>

starter--起步依赖

把所有的技术使用的固定搭配格式都给开发出来,以后你用某个技术,就不用一次写一堆依赖了,还容易写错,对于这样的固定技术搭配,SpringBoot给它起了个名字叫做starter。parent就是用于服务starter的,在实际的开发中,如果有对应的starter,直接写starter,而且无需指定版本,版本由parent提供。如果没有对应的starter,手写坐标即可。

格式:

命名规则:spring-boot-starter-技术名称

引导类

我们发现SpringBoot确实帮助我们减少了很多配置工作,下面说一下程序是如何运行的。目前程序运行的入口就是SpringBoot工程创建时自带的那个类了,带有main方法的那个类,运行这个类就可以启动SpringBoot工程的运行。

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

更换内嵌的Tomcat服务器

想用哪个,加个坐标就OK。前提是把tomcat排除掉,因为tomcat是默认加载的。

<dependencies>
    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
</dependencies>

SpringBoot基础配置

SpringBoot默认配置文件是application.properties。SpringBoot中导入对应starter后,提供对应配置属性

关闭运行日志图表(banner)

spring.main.banner-mode=off

设置运行日志的显示级别

logging.level.root=debug

配置日志输入

用于输出SQL语句的执行过程和结果

#指定mybatis输出日志的位置, 输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

但是我们发现输出的SQL语句:delete from emp where id = ?,我们输入的参数16并没有在后面拼接,id的值是使用?进行占位。那这种SQL语句我们称为预编译SQL。

预编译SQL

参数占位符

在Mybatis中提供的参数占位符有两种:${...} 、#{...}

${...}存在sql注入的安全问题,会直接将参数拼接到SQL语句。并且不会对单引号做处理

#{...}执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值。它会对单引号转义成普通的字符串,避免SQL注入。

yaml文件

YAML,一种数据序列化格式。具有容易阅读、容易与脚本语言交互、以数据为核心,重数据轻格式的特点。

语法格式:
  1. 大小写敏感

  2. 属性层级关系使用多行描述,每行结尾使用冒号结束

  3. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

  4. 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

yaml数据读取

读取单一数据

yaml中保存的单个数据,可以使用Spring中的注解直接读取,使用@Value可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

读取全部数据

SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值