【框架】SpringBoot

SpringBoot基础

基本工程

快速建立SpringBoot工程(Spring Intailizr)

image
image
image
image
image
image

工程结构

  1. application.properties配置文件
  2. templates 放web页面
  3. static静态资源 css、js文件等等

工程配置分析(pom.xml)

  • Spring程序和SpringBoot程序对比
类/配置文件 Spring SpringBoot
pom文件中的坐标 手动添加 勾选添加
web3.0配置类 手动制作
Spring/SpringMVC配置类 手动制作
控制器类 手动制作 手工制作

快速启动

  1. 右侧 → Maven → Lifecycle → package
  2. 左侧 → target → 对应工程.jar → 右键 → Open in → Explorer (打开所在文件夹)
  3. 该jar包即可发给前端工作人员
  4. 在该文件夹路径框直接输入cmd + enter
  5. 输入:java -jar 对应工程.jar(这个打个首字母 + Tab即可补全文件名)

注意事项
jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
这个插件应该在SpringBoot建立时自动导入的。

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

pom.xml分析

SpringBoot起步依赖

  1. 版本管理 (若干properties + 若干依赖)
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  1. 依赖
    <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>

主启动类/引导类

image

  • 目前pom.xml是web依赖,那么启动类启动就是web程序

换依赖

  1. 起步依赖中 排除依赖
  2. 添加新依赖,不需要添加版本号
  • 比如Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换Jetty

基础配置

SpringBoot有多种配置方式

  1. properties
  2. yaml
  3. yml

存在多种配置时,优先级:

  1. properties
  2. yml
  3. yaml

自动提示功能解决方案

image
image

yaml

基本语法

  • key: value;kv之间有空格
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 字符串无需加引号,如果要加,单引号''、双引号""表示字符串内容会被 转义、不转义

数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null
k: v
  • 对象:键值对的集合。map、hash、set、object
#行内写法:  

k: {k1:v1,k2:v2,k3:v3}

#或

k: 
  k1: v1
  k2: v2
  k3: v3
  • 数组:一组按次序排列的值。array、list、queue
#行内写法:  

k: [v1,v2,v3]

#或者
# - 代表一个元素
k:
 - v1
 - v2
 - v3

实例

@Data
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

@Data
public class Pet {
    private String name;
    private Double weight;
}

用yaml表示以上对象

person:
  userName: zhangsan #如何用双引号就不转义,但是用单引号 转义字符会被转义
  boss: false
  birth: 2019/12/12 20:12:33
  age: 18
  pet: 
    name: tomcat
    weight: 23.4
  interests: [篮球,游泳]
  animal: 
    - jerry
    - mario
  score:
    english: 
      first: 30
      second: 40
      third: 50
    math: [131,140,148]
    chinese: {first: 128,second: 136}
  salarys: [3999,4999.98,5999.99]
  allPets:
    sick:
      - {name: tom}
      - {name: jerry,weight: 47}
    health: [{name: mario,weight: 47}]

读取

  1. 基本数据类型
@Value("$lesson")   //yaml中lesson:SpringBoot
private String lesson;
  1. 数组
@Value("$subject[0]")   //yaml如下
private String subject0; //java
subject:
  - java
  - 前端
  - 大数据
@Value("$subject[0]")   //yaml如下
private String subject0; //java
enterprise
  name:itcast
  age:16
  tel:4006184000
  subject:
  - java
  - 前端
  - 大数据
  1. 直接加载全部
@Autowired
private Environment environment;

public void get(){
	System.out.println(environment.getProperty("enterprise.name"));
}
enterprise
  name:itcast
  age:16
  tel:4006184000
  subject:
  - java
  - 前端
  - 大数据
  1. @ConfigurationProperties + @Component
    假设有配置文件application.properties
mycar.brand=BYD
mycar.price=100000

只有在容器中的组件,才会拥有SpringBoot提供的强大功能

@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
	private String brand;
	private Integer price;
}

set...

get...

toString...
//调用
@Autowired
private Car car;

public void get(){
	System.out.println(car);
}

多环境配置

分新旧两种写法,多个环境之间以“---”隔开

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

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

---
#推荐格式 
spring:
  config:
    activate:
      on-profile: other
server:
  port: 83

额外说一下properties相关写法
application.properties中
spring.profiles.active=dev

application-dev.properties中
server.port=8081

多环境命令行启动参数设置

  • 带参数启动SpringBoot
    java -jar springboot.jar --spring.profiles.active=test
    临时加参数,启动测试环境
    包括以下操作:
    java -jar springboot.jar --server.port=88

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

多环境开发控制(Maveb和Boot的兼容问题)

  • 1.maven设置多环境
    image

  • 2.SpringBoot中引用maven属性
    image

  • 3.执行maven打包指令

  • imageimage

  • 4.image

配置文件分类

  • SpringBoot中4级配置文件
    target(文件路径)下
    1级 file:config/application.yml
    2级 file:application.yml
    resources(就是类路径)下
    3级 classpath:config/application.yml
    4级 classpath:application.yml
  • 作用
    1. 1级和2级留作系统打包后设置通用属性
    2. 3级和4级用于系统开发阶段设置通用属性

整合第三方技术

SpringBoot整合JUnit

回顾Spring整合JUnit

image

SpringBoot整合JUnit

image

  • 名称:@SpirngBootTest
  • 类型:测试类注解
  • 位置:测试类定义上方
  • 作用:设置JUnit加载的SpringBoot启动类
  • 范例:
@SpringBootTest(classes = SpringBoot07JunitApplication.class)
class SpringBoot07JunitApplicationTests{
}
  • 相关属性 classes:设置SpringBoot启动类
  • 注意事项:如果测试类在SpringBoot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的设定

SpringBoot实现SSM整合

内容:

  • SpringBoot整合Spring(不存在)
  • SpringBoot整合SpringMVC(不存在)
  • SpirngBoot整合Mybatis(主要工作)

回顾Spring整合Mybatis

  • SpringConfig
    • 导入JdbcConfig
    • 导入MybatisConfig
      image
  • JDBCConfig
    • 定义数据源(加载properties配置项:driver、url、username、password)
      image
  • MyBatisConfig配置
    • 定义SqlSessionFactoryBean
    • 定义映射配置
      image
      image

SpringBoot整合Mybatis

步骤:

  1. image

  2. image

  3. image

  4. image

  5. image

posted @   沫漓fighting  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示