• 黑马程序:springboot


    一、演示创建过程

    1.1创建框架

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

    1.2 创建框架后,进行测试

    • controller:控制层

    controller:控制层

    • @RestController:用于标注控制层组件(如struts中的action),@ResponseBody和@Controller的合集。

    • @Controller:通常用于修饰controller层的组件,由控制器负责将用户发来的URL请求转发到对应的服务接口,通常还需要配合注解@RequestMapping使用。

    • @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,返回数据的格式为application/json。

    • @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。

    • @RequestMapping:(“/path”)表示该控制器处理所有“/path”的UR L请求。

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

    • pop.xml
      在这里插入图片描述

    1.3 程序好后,打包给前端人员用

    • 打包
      由于我们在构建 SpringBoot 工程时已经在 pom.xml 中配置了如下插件
      在这里插入图片描述
      所以我们只需要使用 Mavenpackage 指令打包就会在 target 目录下生成对应的 Jar 包。

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

    在这里插入图片描述

    • 启动

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

    jar -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar
    
    • 1

    执行上述命令就可以看到 SpringBoot 运行的日志信息

    在这里插入图片描述

    2 配置文件

    2.1 配置文件格式

    我们现在启动服务器默认的端口号是 8080,访问路径可以书写为

    http://localhost:8080/books/1
    
    • 1

    在线上环境我们还是希望将端口号改为 80,这样在访问的时候就可以不写端口号了,如下

    http://localhost/books/1
    
    • 1

    SpringBoot 程序如何修改呢?SpringBoot 提供了多种属性配置方式

    • application.properties

      server.port=80
      
      • 1
    • application.yml

      server:
      	port: 81
      
      • 1
      • 2
    • application.yaml

      server:
      	port: 82
      
      • 1
      • 2

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

    在这里插入图片描述

    • application.properties配置文件

    现在需要进行配置,配合文件必须放在 resources 目录下,而该目录下有一个名为 application.properties 的配置文件,

    application.properties 配置文件内容如下:

    server.port=80
    
    • 1
    • application.yml配置文件

    删除 application.properties 配置文件中的内容。在 resources 下创建一个名为 application.yml 的配置文件,在该文件中书写端口号的配置项,格式如下:

    server:
    	port: 81
    
    • 1
    • 2

    注意: 在:后,数据前一定要加空格。

    • application.yaml配置文件

    删除 application.yml 配置文件和 application.properties 配置文件内容,然后在 resources 下创建名为 application.yaml 的配置文件,配置内容和后缀名为 yml 的配置文件中的内容相同,只是使用了不同的后缀名而已

    application.yaml 配置文件内容如下:

    server:
    	port: 83
    
    • 1
    • 2

    在这里插入图片描述

    注意:在配合文件中如果没有提示,可以使用一下方式解决

    • 点击 File 选中 Project Structure

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

    2.2 yaml格式

    上面讲了三种不同类型的配置文件,而 properties 类型的配合文件之前我们学习过,接下来我们重点学习 yaml 类型的配置文件。

    **YAML(YAML Ain’t Markup Language),一种数据序列化格式。**这种格式的配置文件在近些年已经占有主导地位,那么这种配置文件和前期使用的配置文件是有一些优势的,我们先看之前使用的配置文件。

    最开始我们使用的是 xml ,格式如下:

    <enterprise>
        <name>itcast</name>
        <age>16</age>
        <tel>4006184000</tel>
    </enterprise>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    properties 类型的配置文件如下

    enterprise.name=itcast
    enterprise.age=16
    enterprise.tel=4006184000
    
    • 1
    • 2
    • 3

    yaml 类型的配置文件内容如下

    enterprise:
    	name: itcast
    	age: 16
    	tel: 4006184000
    
    • 1
    • 2
    • 3
    • 4

    优点:

    • 容易阅读

      yaml 类型的配置文件比 xml 类型的配置文件更容易阅读,结构更加清晰

    • 容易与脚本语言交互

    • 以数据为核心,重数据轻格式

      yaml 更注重数据,而 xml 更注重格式

    YAML 文件扩展名:

    • .yml (主流)
    • .yaml

    上面两种后缀名都可以,以后使用更多的还是 yml 的。

    2.2.1 语法规则

    • 大小写敏感

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

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

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

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

    • # 表示注释

    核心规则:数据前面要加空格与冒号隔开

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

    enterprise:
      name: itcast
      age: 16
      tel: 4006184000
      subject:
        - Java
        - 前端
        - 大数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.3 yaml配置文件数据读取

    2.3.1 使用 @Value注解

    使用 @Value("表达式") 注解可以从配合文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}

    我们可以在 BookController 中使用 @Value 注解读取配合文件数据,如下
    在这里插入图片描述
    在这里插入图片描述

    2.3.2 Environment对象(开发中基本不用)

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

    2.3.2 自定义对象

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

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

      在类上添加 @Component 注解

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

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

    • BookController 中进行注入

    具体代码如下:

    Enterprise 实体类内容如下:

    在这里插入图片描述
    BookController 内容如下:

    @RestController
    @RequestMapping("/books")
    public class BookController {
        
        @Autowired
        private Enterprise enterprise;
    
        @GetMapping("/{id}")
        public String getById(@PathVariable Integer id){
            System.out.println(enterprise.getName());
            System.out.println(enterprise.getAge());
            System.out.println(enterprise.getSubject());
            System.out.println(enterprise.getTel());
            System.out.println(enterprise.getSubject()[0]);
            return "hello , spring boot!";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    2.4 设置多环境

    在这里插入图片描述

    2.4.1 yaml文件

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

    #设置启用的环境
    spring:
      profiles:
        active: dev
    
    ---
    #开发
    #开发
    spring:
      config:
        activate:
          on-profile: dev
    server:
      port: 8000
    ---
    #生产
    spring:
      profiles: pro
    server:
      port: 81
    ---
    #测试
    spring:
      profiles: test
    server:
      port: 82
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    上面配置中
    在这里插入图片描述

    2.4.2 properties文件

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

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

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

      server.port=81
      
      • 1
    • application-pro.properties 是生产环境的配置文件。我们在该文件中配置端口号为 82

      server.port=82
      
      • 1

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

    spring.profiles.active=pro
    
    • 1

    在这里插入图片描述

    2.4.3 命令行启动参数设置

    在这里插入图片描述

    在这里插入图片描述
    防止配置文件中出现中文,报错
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    ctrl+c 停止运行
    在这里插入图片描述

    使用 SpringBoot 开发的程序以后都是打成 jar 包,通过 java -jar xxx.jar 的方式启动服务的。那么就存在一个问题,如何切换环境呢?因为配置文件打到的jar包中了。

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

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

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

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

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

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

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

    https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
    
    • 1

    进入上面网站后会看到如下页面

    在这里插入图片描述

    2.5 配置文件分类

    3.遇到的一些爆红情况

    • 问题一:加入注解后爆红,但不影响使用

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

    • 问题er:加入注解后爆红,但不影响使用

    在这里插入图片描述

    3 SpringBoot整合junit

    3.1创建新环境

    在这里插入图片描述

    4,SpringBoot整合mybatis

    4.1 回顾Spring整合Mybatis

    4.2 SpringBoot整合mybatis

    4.2.1 创建模块

    在这里插入图片描述

    4.2.2 定义实体类

    com.itheima.domain 包下定义实体类 Book,内容如下

    public class Book {
        private Integer id;
        private String name;
        private String type;
        private String description;
        
        //setter and  getter
        
        //toString
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4.2.3 定义dao接口

    com.itheima.dao 包下定义 BookDao 接口,内容如下

    public interface BookDao {
        @Select("select * from tbl_book where id = #{id}")
        public Book getById(Integer id);
    }
    
    • 1
    • 2
    • 3
    • 4

    4.2.4 定义测试类

    test/java 下定义包 com.itheima ,在该包下测试类,内容如下

    @SpringBootTest
    class Springboot08MybatisApplicationTests {
    
    	@Autowired
    	private BookDao bookDao;
    
    	@Test
    	void testGetById() {
    		Book book = bookDao.getById(1);
    		System.out.println(book);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.2.5 编写配置

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

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

    spring:
      datasource:
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/ssm_db
        username: root
        password: root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    4.2.6 测试

    运行测试方法,我们会看到如下错误信息

    image-20210917221427930
  • 相关阅读:
    Python 知识:检查图中是否存在哈密顿循环
    思科设备STP、RSTP配置命令
    十六、代码校验(4)
    《Node.js+Express+MongoDB+Vue.js全栈开发实战》简介
    模拟实现string
    [go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型以及运行cpu数目,协程资源竞争问题
    LLMs——扩展数据受限的语言模型解决方案
    JavaScript 62 JavaScript 版本 62.6 ECMAScript 2018
    JAVA毕业设计Web企业客户管理系统计算机源码+lw文档+系统+调试部署+数据库
    期权翻倍行情一个月会出现几次?
  • 原文地址:https://blog.csdn.net/weixin_44953928/article/details/124866017