SpringBoot

本文详细介绍了SpringBoot的快速入门,包括创建新模块、配置Web支持、创建Controller、启动服务器及测试。讲解了SpringBoot的起步依赖、引导类、内嵌Tomcat以及系统属性配置。此外,还探讨了配置文件的格式(properties和yaml)、数据读取方法、多环境配置以及整合第三方技术如JUnit、MyBatis等。最后,提到了配置文件分类和Druid数据源的使用。
摘要由CSDN通过智能技术生成

1.SpringBoot简介

1.1 SpringBoot快速入门

  • 1 创建新模块
    在这里插入图片描述

  • 选中 Web,然后勾选 Spring Web
    由于我们需要开发一个 web 程序,使用到了 SpringMVC 技术,所以按照下图红框进行勾选
    在这里插入图片描述
    -经过以上步骤后就创建了如下结构的模块,它会帮我们自动生成一个 Application 类,而该类一会再启动服务器时会用到

  • 2创建 Controller
    com.itheima.controller 包下创建 BookController ,代码如下:

@RestController
@RequestMapping("/books")
public class BookController {

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id ==> "+id);
        return "hello , spring boot!";
    }
}
  • 3 启动服务器
    在这里插入图片描述
    在这里插入图片描述
  • `4 测试

这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication 注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。

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>
   
   <!--指定了一个父工程,父工程中的东西在该工程中可以继承过来使用-->
   <parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>2.5.0</version>
   </parent>
   <groupId>com.itheima</groupId>
   <artifactId>springboot_01_quickstart</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <!--JDK 的版本-->
   <properties>
       <java.version>8</java.version>
   </properties>
   
   <dependencies>
       <!--该依赖就是我们在创建 SpringBoot 工程勾选的那个 Spring Web 产生的-->
       <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.springframework.boot</groupId>
               <artifactId>spring-boot-maven-plugin</artifactId>
           </plugin>
       </plugins>
   </build>
</project>

1.2 SpringBoot快速入门(网址版)

https://spring.io/projects/spring-boot

进入到 SpringBoot 官网后拖到最下方就可以看到如下内容
在这里插入图片描述
然后点击 Spring Initializr 超链接就会跳转到如下页面
在这里插入图片描述

选择 Spring Web 可以点击上图右上角的 ADD DEPENDENCIES... CTRL + B 按钮,就会出现如下界面
在这里插入图片描述

以上步骤完成后就可以生成 SpringBoot 工程了。在页面的最下方点击 GENERATE CTRL + 回车 按钮生成工程并下载到本地,如下图所示
在这里插入图片描述
以上步骤完成后就可以生成 SpringBoot 工程了。在页面的最下方点击 GENERATE CTRL + 回车 按钮生成工程并下载到本地,如下图所示
在这里插入图片描述

1.3 SpringBoot快速入门(阿里云版)

只需要将地址进行修改即可

http://start.aliyun.com或https://start.aliyun.com

1.4 SpringBoot快速入门

  • 1.由于我们在构建 SpringBoot 工程时已经在 pom.xml 中配置了如下插件
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
  • 2.所以我们只需要使用 Mavenpackage 指令打包就会在 target 目录下生成对应的 Jar 包。

注意:该插件必须配置,不然打好的 jar 包也是有问题的。

  • 3.进入 jar 包所在位置,在 命令提示符 中输入如下命令

jar -jar xxxx.jar

  • 4.执行上述命令就可以看到 SpringBoot 运行的日志信息
    在这里插入图片描述

1.5 SpringBoot概述

   1.5.1 起步依赖

在这里插入图片描述

  • 父工程
    在这里插入图片描述
    上图中的 properties 标签中定义了各个技术软件依赖的版本,避免了我们在使用不同软件技术时考虑版本的兼容问题。在 properties 中我们找 servletmysql 的版本如下图在这里插入图片描述
    dependencyManagement标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的groupidartifactId不需要定义version`。

build 标签中也对插件的版本进行了锁定,如下图
在这里插入图片描述
看完了父工程中 pom.xml 的配置后不难理解我们工程的的依赖为什么都没有配置 version

   1.5.2 探索依赖

在我们创建的工程中的 pom.xml 中配置了如下依赖
在这里插入图片描述
进入到该依赖,查看 pom.xml 的依赖会发现它引入了如下的依赖
在这里插入图片描述
里面的引入了 spring-webspring-webmvc 的依赖,这就是为什么我们的工程中没有依赖这两个包还能正常使用 springMVC 中的注解的原因。

   1.5.2 引导类

@SpringBootApplication
public class Springboot01Application {

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

}

SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

   1.5.4 内嵌tomcat

在这里插入图片描述
在这里插入图片描述

======================================================================================

2.配置文件

   2.1 系统属性配置

修改配置:

  1. 修改服务器端口号

#服务器端口修改
server.port=80

  1. 关闭运行日志图标

#关闭日志运行图标
spring.main.banner-mode=off

  1. 设置日志相关

logging.level.root=debug

4. 因为有更多的关于配置的信息:
查询方法如下:

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties

在这里插入图片描述

   2.2 配置文件格式

  • application.properties

server.port=80 修改端口号

  • application.yml

server:
port: 81

  • application.yaml

server:
port: 82

注意:SpringBoot 程序的配置文件名必须是 application ,只是后缀名不同而已。

创建结尾为yml,yaml或者properties的application文件


注意:优先级

application.properties > application.yml > application.yaml


配置文件不出现提示:
在这里插入图片描述

在这里插入图片描述

   2.3 yaml(yml)格式

  • 大小写敏感

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

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

    空格的个数并不重要,只要保证同层级的左侧对齐即可。

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

  • # 表示注释
    核心规则:数据前面要加空格与冒号隔开

数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔,例如

enterprise:
  name: itcast
  age: 16
  tel: 4006184000
  subject:    //数组
    - Java
    - 前端
    - 大数据
  subject: [java,前端,大数据]  //也是数组
  users:     //对象数组  第一种
  	- name: tom
  	  age: 4
   - name: tim
  	  age: 8
  users1:     //对象数组   第二种
  	-
  	  name: tom
  	  age: 4
   -  
      name: tim
  	  age: 8
  usrs3: [{name:tom,age:4},{name:tim,age:8}]   //第三种对象数组

   2.4 yaml(yml)配置文件数据读取

       2.4.1 使用 @Value注解

使用 @Value("表达式") 注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}
在yaml文件种读取数据只需要 ${}即可
在这里插入图片描述

#转义字符不生效
user1: ${users}\temp
结果:d/window10\temp

#加了字符串 转义字符就生效了
user2: "${users}\temp"
结果:d/window10	emp

       2.4.2 Environment对象

上面方式读取到的数据特别零散,SpringBoot 还可以使用 @Autowired 注解注入 Environment 对象的方式读取数据。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用 Environment 对象的 getProperty(String name) 方法获取。具体代码如下:
在这里插入图片描述

注意:这种方式,框架内容大量数据,而在开发中我们很少使用。

       2.4.3 自定义对象

1. 使用@ConfigurationProperties注解绑定配置信息到封装类中
2. 封装类需要定义为Spring管理的bean,否则无法进行属性注入

SpringBoot 还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:

  • 将实体类 bean 的创建交给 Spring 管理。

    在类上添加 @Component 注解

  • 使用 @ConfigurationProperties 注解表示加载配置文件

    在该注解中也可以使用 prefix 属性指定只加载指定前缀的数据

  • BookController 中进行注入

在这里插入图片描述
在这里插入图片描述

注意: 使用第三种方式,在实体类上有如下警告提示
在这里插入图片描述
这个警告提示解决是在 pom.xml 中添加如下依赖即可

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

   2.5 多环境配置

以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql ,连接自己电脑上的 mysql 即可,但是项目开发完毕后要上线就需要该配置,将环境的配置改为线上环境的。
在这里插入图片描述

       2.5.1 yaml文件

application.yml 中使用 --- 来分割不同的配置,内容如下

#设置启用的环境
spring:
  profiles:
    active: dev

---
#开发
spring:
  profiles: dev
server:
  port: 80
---
#生产
spring:
  profiles: pro
server:
  port: 81
---
#测试
spring:
  profiles: test
server:
  port: 82
---

注意:

在上面配置中给不同配置起名字的 spring.profiles 配置项已经过时。最新用来起名字的配置项是

#开发
spring:
  config:
    activate:
      on-profile: dev

       2.5.2 properties文件

properties 类型的配置文件配置多环境需要定义不同的配置文件

  • application-dev.properties是开发环境的配置文件。我们在该文件中配置端口号为80`

server.port=80

  • application-test.properties是测试环境的配置文件。我们在该文件中配置端口号为81`

server.port=81

SpringBoot 只会默认加载名为 application.properties 的配置文件,所以需要在 application.properties 配置文件中设置启用哪个配置文件,配置如下:

spring.profiles.active=dev

       2.5.3 命令行启动参数设置

  • 1.修改配置
    在这里插入图片描述
    我们知道 jar 包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。这种方式显然有点麻烦,而 SpringBoot 提供了在运行 jar 时设置开启指定的环境的方式,如下

java –jar xxx.jar –-spring.profiles.active=test

那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式

java –jar xxx.jar –-server.port=88

当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下

java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test

大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实 SpringBoot 官网已经进行了说明,参见 :
在这里插入图片描述

       2.5.4 Maven和boot的多环境开发兼容问题

以Maven为主 boot为辅

=================================================

   2.6 配置文件分类

有这样的场景,我们开发完毕后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下

SpringBoot 中4级配置文件放置位置:

  • 1级:classpath:application.yml
  • 2级:classpath:config/application.yml
  • 3级:file :application.yml
  • 4级:file :config/application.yml

==说明:==级别越高优先级越高

在这里插入图片描述

3.SpringBoot整合第三方技术

   3.1 SpringBoot整合junit

直接使用即可
在这里插入图片描述
注意: 这里的引导类所在包必须是测试类所在包及其子包。

例如:

  • 引导类所在包是 com.itheima
  • 测试类所在包是 com.itheima

如果不满足这个要求的话,就需要在使用 @SpringBootTest 注解时,使用 classes 属性指定引导类的字节码对象。如 @SpringBootTest(classes = Springboot07TestApplication.class)

=========================================

   3.2 SpringBoot整合mybatis

  • 创建新模块,选择 Spring Initializr,并配置模块相关基础信息
    在这里插入图片描述

  • 选择当前模块需要使用的技术集(MyBatis、MySQL)
    在这里插入图片描述

  • 定义dao接口
    在这里插入图片描述

  • 我们代码中并没有指定连接哪儿个数据库,用户名是什么,密码是什么。所以这部分需要在 SpringBoot 的配置文件中进行配合。

application.yml 配置文件中配置如下内容

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ssm_db
    username: root
    password: 1234

注意:

SpringBoot 版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区 jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC,或在MySQL数据库端配置时区解决此问题

   3.3 整合Mybtais_plus

  • 1.导入mysql驱动包
    在这里插入图片描述
  • 2.导入mybaits的依赖
<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3</version>
        </dependency>
  • 3.因为使用mybaits_plus的时候是按照domain中的pojo类名进行寻找表,所以我们数据库中寻求不到表 所以我们需要配置。
    在这里插入图片描述

  • 4.编写dao层的内容
    在这里插入图片描述

  • 5.进行调用
    在这里插入图片描述

   3.4 使用Druid数据源

  • 导入 Druid 依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
  • application.yml 配置文件配置
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值