SpringBoot知识01

1、Spring和SpringBoot对比

SpringBoot知识01_第1张图片

2、版本调整

(1)先排除是否是JDK与SpringBoot的版本不一致导致的:如JDK1.8和SpringBoot3.1.5冲突;

SpringBoot知识01_第2张图片

(2)调整编译版本

SpringBoot知识01_第3张图片

(3)调整maven的jdk

SpringBoot知识01_第4张图片

SpringBoot知识01_第5张图片

(4)检查项目配置的JDK版本

SpringBoot知识01_第6张图片

SpringBoot知识01_第7张图片

3、创建springboot程序

(1)创建项目SpringBoot知识01_第8张图片

(2)添加web

SpringBoot知识01_第9张图片

(3)写自己的Controller

SpringBoot知识01_第10张图片

(4)运行内置的类

SpringBoot知识01_第11张图片

3、官网创建程序

(1)打开官网

Spring Boot

 https://start.spring.io​​​​​​​

(2)选择

SpringBoot知识01_第12张图片

(3)写好配置信息 

SpringBoot知识01_第13张图片

(4)写好之后直接generate生成包

SpringBoot知识01_第14张图片

4、终端运行程序

(1)打包生成jar包

SpringBoot知识01_第15张图片​​​​​​​

(2)终端 cd到jar包的位置

SpringBoot知识01_第16张图片

(3)终端 java -jar +完整包名就执行了

注意:前提是本地的jdk版本与之对应

5、使用Jetty代替Tomcat

SpringBoot知识01_第17张图片

6、基本配置方式

properties、yml、yaml

SpringBoot知识01_第18张图片

7、基本配置里面提示消失的解决

SpringBoot知识01_第19张图片

SpringBoot知识01_第20张图片

8、执行顺序

application.properties >application.yml >application.yaml

9、设置日志

logging: 用于配置日志系统

root: warn 的含义是:

  • root 表示这个配置适用于整个项目,也就是说,这个日志级别设置适用于项目中所有的日志记录器。
  • warn 是设置的日志级别,表示只显示警告(WARN)及以上级别的日志,即 WARNERRORFATAL

Spring Boot的日志级别是 INFO,这意味着默认情况下,只有 INFOWARNERROR 和 FATAL 级别的日志会被显示。当 root 设置为 warn 时,所有的 INFO 级别的日志将不会被显示,只显示 WARN 及以上级别的日志

SpringBoot知识01_第21张图片

注意:还有设置端口

10、yml配置

SpringBoot知识01_第22张图片

(1)yml语法规则

SpringBoot知识01_第23张图片

(2)传递数组数据SpringBoot知识01_第24张图片

​​​​​​​SpringBoot知识01_第25张图片

​​​​​​​SpringBoot知识01_第26张图片

11、一般导包都去导入starter类型的,全一些

SpringBoot知识01_第27张图片

12、jar、warn、pom包的区别(默认jar)

SpringBoot知识01_第28张图片

13、新建properties文件

SpringBoot知识01_第29张图片

14、parent 继承父pom文件、properties 统一管理版本号

15、properties作用是统一版本号的

SpringBoot知识01_第30张图片

16、启动类必须创建项目的根包下、必须是以Application结尾

SpringBoot知识01_第31张图片

17、可选依赖

18、创建springboot的流程

(1)新建一个xml文件pom,然后idea打开

(2)新建文件

SpringBoot知识01_第32张图片

(3)配置启动类以及application.properties

SpringBoot知识01_第33张图片

(4)写自己的业务逻辑(controller那些)

 19、maven多模块开发(在一个父工程下面创建多个子工程)

要点就是父工程不要写代码、最多三级工程,一级管一级

20、三者保持一致

SpringBoot知识01_第34张图片

21、maven子项目及继承搭建流程

(1)父类去掉src和target(只留.idea和pom)

SpringBoot知识01_第35张图片

注意:三者保持一致问题(20) 

(2)写父类的pom文件

        加上parent、packaging、modules、dependencyManagement(可加可不加,必须写版本号)

boot-example



    4.0.0
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.7.14
        
    
    
    com.lht.project
    spring-boot-example
    1.0.0
    spring-boot-example
    springboot基础

    
        1.8
    

    
    pom


    
        spring-boot-module-example
        spring-boot-base-example
    



    
        
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                
                2.3.1
            
        
    



    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            org.projectlombok
            lombok
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.7.14
            
        
    


注意:子项目的都是文件的形式new出来的

SpringBoot知识01_第36张图片

(3)子项目定义内容

parent那里的gva都要对应自己父类的内容

SpringBoot知识01_第37张图片

boot-base-example 



    4.0.0

    
    
        com.lht.project
        spring-boot-example
        1.0.0
        ../pom.xml
    

    com.lht.project.base
    spring-boot-base-example
    1.0.0
    spring-boot-base-example
    springboot基础

    
    pom

    
    
        spring-boot-config-example
    





boot-base-config-example  



    4.0.0

    
    
        com.lht.project.base
        spring-boot-base-example
        1.0.0
        ../pom.xml
    
    
    com.lht.project.base.config
    spring-boot-config-example
    1.0.0
    spring-boot-config-example
    springboot基础


    
    
    

    
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
        
    


(4)如果要子类要继承父类dependencyManagement的话就要显示的加上(版本号可不加)

SpringBoot知识01_第38张图片

22、父项目是不能有src的,其余的一直嵌套就可以了,一般就是三层嵌套

23、常用继承的pom文件标签

grouId 项目名
version 版本
properties 版本统一配置
dependencies 依赖导包

24、如果他本身既是父又是子的话,那就不能去掉groudId和version

SpringBoot知识01_第39张图片

25、版本号统一写在properties里面

SpringBoot知识01_第40张图片

26、子类覆盖版本号

(1)子类显示写version

    

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            3.0.2
        
    

(2)子类重写properties(多)

SpringBoot知识01_第41张图片

 27、yml类型

SpringBoot知识01_第42张图片

(1)基本数据类型

SpringBoot知识01_第43张图片

(2) 数组类型        

SpringBoot知识01_第44张图片

(3)对象

SpringBoot知识01_第45张图片

28、单引号可以转义

SpringBoot知识01_第46张图片

29、引用

SpringBoot知识01_第47张图片

30、读取数据的三种方式

SpringBoot知识01_第48张图片

(1)@Value(直接读取)

SpringBoot知识01_第49张图片
(2)Environment(封装后读取)

SpringBoot知识01_第50张图片
(3)自定义对象封装实体类属性(封装后读取)

package com.lht.project.base.config.entity;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @author liuhuitang
 */
@Data
@Component
@ConfigurationProperties("enterprise")
public class Enterprise {

    private String  name;
    private Integer age;
    private String[] subject;

}

SpringBoot知识01_第51张图片

SpringBoot知识01_第52张图片

 28、自定义对象封装数据警告解决方案

SpringBoot知识01_第53张图片

32、指定加载的配置类

SpringBoot知识01_第54张图片

33、多环境的配置文件名称必须是  application-开头.yml 

34、多配置文件的加载顺序

(1)不同级目录下:

classpath  >  classspath: config  > file    (优先级越高的,优先加载,后加载的会覆盖前面加载的相同属性)

(2)同级目录下:

yml  > properties   (properties 相同属性会覆盖yml)

35、多配置文件properties(适用不同的数据库)(静态)

指定  

(1)标注不同的端口号

SpringBoot知识01_第55张图片

SpringBoot知识01_第56张图片

 (2)可运行的配置文件里面定义扫描(active覆盖 、include少用)

指定   (active覆盖 、nclude少用)

​​​​​​​​​​​​​​​​​​​​​SpringBoot知识01_第57张图片

 两个都写的话就以后面的为主 

36、maven多环境选择及打包(动态)

(1)外部的pom定义开发环境


        
        

            dev
            

                dev
                10.0.0.1
            
        

        
            test
            
                test
                10.0.0.2
            
        

    

注意名字必须一样

SpringBoot知识01_第58张图片

(2)可运行的配置文件里面定义扫描(${}也行)

SpringBoot知识01_第59张图片

(3)选定环境之后运行

SpringBoot知识01_第60张图片

37、配置文件里面有则覆盖,无则互补

38、关于打包

 (1)可运行程序的pom里面配置打包的build

  
    
        ${name}-${version}-${project.active}
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.7.14
            
        
    

(2)maven那里选择要打包的项目/子项目

(只允许打包一个,多就以后面的为主)

SpringBoot知识01_第61张图片

 37、url配置

SpringBoot知识01_第62张图片

38、日志设定(S lf4j和log4j2为主)

39、 @SpringBootApplication注解(组合注解,使用在程序的启动类上)

@ComponentScan 开启spring ioc容器注解支持
@SpringBootConfiguration 对Java Config支持
@EnableAutoConfiguration 自动装配,自动将类注入到容器

@Import 引入类

AutoConfigurationImportSelector

 入口方法: selectImports

40、改变端口和api路径

server:
  port: 8081
  servlet:
    context-path: "/api"

41、要在下面跑,不然容易跑其他工程

SpringBoot知识01_第63张图片

42、yml 支持松散语法(单值value不支持松散语法)

SpringBoot知识01_第64张图片

SpringBoot知识01_第65张图片

SpringBoot知识01_第66张图片

43、MongoDB多用于日志,也会丢数据

SpringBoot知识01_第67张图片

45、springboot整合mybatis

(1)主pom上写可选依赖

    
        1.8
        2.3.1
        1.2.6
    

    
    
        
            
                org.mybatis.spring.boot
                mybatis-spring-boot-starter
                
                ${mybatis.starter.version}
            
            
                com.alibaba
                druid-spring-boot-starter
                ${druid.starter.version}
            

        
    

(2)子pom写依赖

    
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
        
        
            com.alibaba
            druid-spring-boot-starter
        
        
            mysql
            mysql-connector-java

            8.0.28
        
    

(3)子配置文件配置信息

server:
  port: 8081

spring:
  datasource:
    # 指定连接池的类型
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      url: "jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8&useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai"
      username: "root"
      password: "lht660036"
      max-active: 20
      # 可选值
      # wall  开启druid 防火墙
      # stat  启用druid的性能监控
      filters: "wall,slf4j,stat"
      web-stat-filter:
        enabled: true
        url-pattern: /*
        # 排除不需要监测的资源
        exclusions: "/druid,*.png"
        # 监控界面的配置
      stat-view-servlet:
        enabled: true
        url-pattern: "/druid/*"
        reset-enable: true
        login-username: admin
        login-password: admin

mybatis:
  # 注册mapper.xml
  mapper-locations: "classpath*:mapper/**/*.xml"
  #  起别名
  type-aliases-package: "com.lht.project.data.mybatis.entity"

(4)启动类加MapperScan

SpringBoot知识01_第68张图片

(5)正常的三层架构

 46、查看monitor性能监控

http://127.0.0.1:8081/druid/sql.html​​​​​​​

SpringBoot知识01_第69张图片

47、批量修改数据

 (1)sql语句

    
        UPDATE sys_user
        SET del_status = 1
        WHERE user_id IN

        
            #{userIds}
        
    

(2)mapper

SpringBoot知识01_第70张图片

(3)controllerSpringBoot知识01_第71张图片

(4)传参(都可以,除了传json)

48、批量插入数据

(1)sql语句

    
        INSERT INTO sys_user (username, password, phone)
        values
        
            
                
                    #{users.username},
                
                
                    #{users.password},
                
                
                    #{users.phone}
                
            
        
    

(2)mapper

SpringBoot知识01_第72张图片

(3)controller

  @PostMapping("/save")
    public ResponseResult insertUser(@RequestBody List users){
        return ResponseResult.success(userService.insertUser(users));
    }

(4)传参

[
    {
     "username": "测试01",
     "password": "8888",
     "phone": "8888888"
    },
    {
     "username": "测试02",
     "password": "9999",
     "phone": "9999999"
    }
]

48、foreach里面如果传递的参数是基本数据类型,collection那里就直接类型,否则固定为list(传集合对象时)

49、{ }代表对象,[ ]代表传入一个数组

50、12345678.12 是一个有效的decimal(10,2)值。
而123456781.12 则超出了这个数据类型的范围,因为它有11位数字,而小数点后只有2位。

51、雪花算法和UUID的区别

雪花算法(Snowflake)和UUID都是用于生成全局唯一标识符的算法,但它们在生成唯一标识符的机制和用途上有一些区别。

雪花算法是一种分布式唯一ID生成算法,用于在分布式系统中生成唯一的ID。它的核心是一个64位的二进制数字,由时间戳、机器标识和序列号三部分组成。雪花算法能够在分布式环境中保证ID的唯一性,并且ID是递增的,具有更好的顺序性。由于其生成的ID是递增的,雪花算法特别适合用于生成数据库的主键等需要按顺序生成唯一标识符的场景。

UUID,即通用唯一标识符,则是由一组十六进制数字组成的标识符,用于在分布式系统中唯一地标识某个信息。UUID是一种更为通用的算法,不依赖于任何特定的分布式环境,因此在各种计算机和系统之间都可以使用。UUID通常用于生成唯一的数据库记录标识符、文件名等。由于UUID的目的是保证在任何分布式系统中的唯一性,它并不保证生成的ID具有顺序性。

总的来说,如果你需要在分布式环境中生成唯一的、递增的ID,以用作数据库主键等需要顺序生成的唯一标识符的场景,雪花算法可能是更好的选择。而如果你需要生成一个在任何分布式系统或计算机中都唯一的标识符,但不关心是否递增或顺序,那么UUID可能更为适合。

52、分页默认值

53、三层命名的规范

(1)controller、service层:queryProduct

(2)mapper层:selectProductsByName

你可能感兴趣的:(java)