SSM框架(六):SpringBoot技术及整合SSM

news2025/1/20 12:00:14

文章目录

  • 一、概述
    • 1.1 简介
    • 1.2 起步依赖
    • 1.3 入门案例
    • 1.4 快速启动
  • 二、基础配置
    • 2.1 三种配置文件方式
    • 2.2 yaml文件格式
    • 2.3 yaml读取数据方式(3种)
  • 三、多环境开发
    • 3.1 yml文件-多环境开发
    • 3.2 properties文件-多环境开发
    • 3.3 多环境命令行启动参数设置
    • 3.4 多环境开发兼容问题(maven与boot)
    • 3.5 配置文件分级
  • 四、基于SpringBoot整合SSM
    • 4.1 整合Junit
    • 4.2 整合Mybatis
    • 4.3 案例


一、概述

1.1 简介

在这里插入图片描述

1.2 起步依赖

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

在这里插入图片描述

1.3 入门案例

【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目

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

在这里插入图片描述

在这里插入图片描述

1.4 快速启动

后端人员可以将项目打jar包,交给前端人员,通过dos指令操作运行后端程序和服务器,方便前端人员设计界面,而不用安装idea

注意:下图红色部分1必须写,以保证打包时具有springboot的Maven插件
在这里插入图片描述

二、基础配置

2.1 三种配置文件方式

配置文件建立在src/main/resources目录下。

SpringBoot加载配置文件的顺序:application.propertirs > application.yml > application.yaml

在这里插入图片描述

如果自己建的配置文件没有自动提示功能,可通过下述方法解决:
在这里插入图片描述

2.2 yaml文件格式

在这里插入图片描述

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

2.3 yaml读取数据方式(3种)

application.yaml

lesson: SpringBoot

server:
  port: 80

enterprise:
  name: itcast
  age: 16
  tel: 15922266
  subject:
    - Java
    - 前端
    - 大数据

Enterprise.class

package com.itheima.domain;

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

import java.util.Arrays;

//封装yaml对象格式数据必须先声明当前实体类受Spring管控
@Component
//使用@ConfigurationProperties注解定义当前实体类读取配置属性信息,通过prefix属性设置读取哪个数据
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
    private String name;
    private Integer age;
    private String tel;
    private String[] subject;

    @Override
    public String toString() {
        return "Enterprise{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", tel='" + tel + '\'' +
                ", subject=" + Arrays.toString(subject) +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String[] getSubject() {
        return subject;
    }

    public void setSubject(String[] subject) {
        this.subject = subject;
    }
}

BookController.class

package com.itheima.controller;

import com.itheima.domain.Enterprise;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/books")
public class BookController {
    @Value("${lesson}")
    private String lesson;
    @Value("${server.port}")
    private String port;
    @Value("${enterprise.subject[0]}")
    private String subject_0;

    @Autowired
    private Environment environment;

    @Autowired
    private Enterprise enterprise;

    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("-----第一种方式:@Value直接读取-------");
        System.out.println(lesson);
        System.out.println(port);
        System.out.println(subject_0);

        System.out.println("-----第二种方式:Envrionment封装后读取-------");
        System.out.println(environment.getProperty("enterprise.subject[1]"));

        System.out.println("-----第三种方式:自定义实体类封装属性-------");
        System.out.println(enterprise);
        return "hello , spring boot!";
    }

}

注意:自定义对象封装数据警告解决方案

        <!-- 自定义对象封装数据警告解决方案 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

三、多环境开发

3.1 yml文件-多环境开发

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

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

3.2 properties文件-多环境开发

在这里插入图片描述

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

  1. 编写yml文件
  2. 因为带有中文,所以要设置字符集编码
  3. 打包前clean一下
  4. 关闭测试(可选)
  5. 打包package
  6. 去jar包的目录下启动cmd,通过命令行配置启动环境:java -jar 包名 --spring.profile.active=环境名
    在这里插入图片描述
    也可以通过命令行改变端口号
    在这里插入图片描述

3.4 多环境开发兼容问题(maven与boot)

在这里插入图片描述

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

在这里插入图片描述

3.5 配置文件分级

在这里插入图片描述
高级别配置文件会覆盖低级别配置文件,解释:

  1. 当我们在开发时在第4级别配置文件编写;
  2. 当项目提交时,配置第3级别文件;
  3. 然后将项目打包;
  4. 如果需要临时修改配置文件,无需重新打包,直接在jar下配置第1或2级别配置文件,可完成灵活配置

这里的,file一般指的是打包后的目录,即;项目名/target;classpath一般指的是类目录,即:项目名src/main/resources/

在这里插入图片描述

四、基于SpringBoot整合SSM

4.1 整合Junit

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

4.2 整合Mybatis

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

4.3 案例

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1280242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov5 7.0版本部署手机端。通过pnnx导出ncnn。

yolov5 7.0版本部署手机端。通过pnnx导出ncnn。 流程配置ncnn android yolov5导出自己模型的ncnn修改yolo.py文件导出TorchScript文件pnnx转torchscript为ncnn 安卓运行权重路径输入输出anchors 大小类别名generate_proposals方法修改 结果 流程 网络yolov5 的部署已经有很多了…

STM32串口接收不定长数据(接收中断+超时判断)

玩转 STM32 单片机&#xff0c;肯定离不开串口。串口使用一个称为串行通信协议的协议来管理数据传输&#xff0c;该协议在数据传输期间控制数据流&#xff0c;包括数据位数、波特率、校验位和停止位等。由于串口简单易用&#xff0c;在各种产品交互中都有广泛应用。 但在使用串…

基础组件总结(以Element UI组件库为例)

一般对一个组件的使用方式&#xff1a; 每一个组件都有被绑定的数据&#xff0c; &#xff08;1&#xff09;首先会对组件的数据初始化&#xff08;a.data中赋初值 b. 在生命周期函数created或mounted中为变量赋予初值&#xff09; &#xff08;2&#xff09;由于不同组件的…

CSS新手入门笔记整理:CSS边框样式

边框宽度&#xff1a;boder-width 语法 boder-width:像素值&#xff1b; 边框样式&#xff1a;boder-style 语法 boder-style:取值&#xff1b; 属性值 说明 none 无样式 dashed 虚线 solid 实线 边框颜色&#xff1a;boder-color 语法 boder-color:色值&#xf…

MFC 绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线.

MFC 绘制三种不同圆形以及绘制正弦函数曲线 本文使用visual Studio MFC 平台实现绘制单一颜色圆形、渐变颜色边框圆形、渐变填充圆形以及绘制三角函数正弦函数曲线. 关于基础工程的创建请参考 01-Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 02-vis…

Hisat-Trinity-PASA等组学分析流程

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 详细教程请访问&#xff1a; 组学分析流程 本期分析流程 Hisat2-SamtoolsTrinity_GG_denovoPASA … 本期教程文章 题目&#xff1a;Genomic insights into local adaptation and future climate-induced vu…

全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解

JSSDK使用步骤 步骤一:绑定安全域名&#xff1a; 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 步骤二:引入JS文件&#xff1a; 在需要调用JS接口的页面引入如下JS文件&#xff0c;&#xff08;支持https&#xff09;&#xff1a;http://…

分治—快速选择算法

文章目录 &#x1f347;215.数组中的第K个最大元素&#x1f348;1. 题目&#x1f349;2. 算法原理&#x1f34a;3. 代码实现 &#x1f34b;LCR 159. 库存管理 III&#x1f34c;1. 题目&#x1f34d;2. 算法原理&#x1f96d;代码实现 &#x1f347;215.数组中的第K个最大元素 …

〖大前端 - 基础入门三大核心之JS篇㊺〗- 定时器和延时器

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

MathType公式编辑器安装教程

一、下载 MathType7是一款可以帮助用户快速完成数学公式编辑的应用软件&#xff0c;这款软件适合在进行教育教学、科研机构、论文写作的时候使用。我们可以直接通过这款软件来获取到大量数学上使用到的函数、数学符号等内容&#xff0c;然后使用这些内容来完成公式编辑。 …

ROS第一个程序——helloworld

目录 一、工作空间的创建 1.创建工作空间并初始化 2.进入 src 创建 ros 包并添加依赖 二、C实现helloworld C源码实现 编辑 ros 包下的 Cmakelist.txt文件 进入工作空间目录并编译 执行 三、python实现helloworld 进入 ros 包添加 scripts 目录并编辑 python 文件 …

【设计模式-4.1】行为型——观察者模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;观察者模式&#xff1b; 商家与顾客 观察者模式属于行为型设计模式&#xff0c;关注对象的行为。以商家与顾客为例&#xff0c;商家有商品&#xff0c;顾客来购买商品&#xff0c;如果商家商品卖完了&#…

【Leetcode题单】(01 数组篇)刷题关键点总结02【统计数组中的元素】

【Leetcode题单】&#xff08;01 数组篇&#xff09;刷题关键点总结02【统计数组中的元素】&#xff08;6题&#xff09; 统计数组中的元素645. 错误的集合 Easy697. 数组的度 Easy448. 找到所有数组中消失的数字 Easy442. 数组中重复的数据 Medium41. 缺失的第一个正数 Hard27…

【问题解决】Linux内核编译安装后磁盘空间已满问题

Linux内核编译安装后磁盘空间已满问题解决过程 【注】本文为个人遇到Linux内核经过make&#xff0c;make modules……乃至最后install以后VMware磁盘空间爆炸的情况后&#xff0c;而又不想重装虚拟机&#xff0c;自己找资料实现解决的&#xff0c;文章中很多链接是来自别的博主…

python动态圣诞下雪图

运行图片 代码 import pygame import random# 初始化Pygame pygame.init()# 创建窗口 width, height 800, 600 screen pygame.display.set_mode((width, height)) pygame.display.set_caption(Christmas Tree)# 定义颜色 GREEN (34, 139, 34) RED (255, 0, 0) WHITE (255…

GAMES101:作业2记录

总览 在上次作业中&#xff0c;虽然我们在屏幕上画出一个线框三角形&#xff0c;但这看起来并不是那么的有趣。所以这一次我们继续推进一步——在屏幕上画出一个实心三角形&#xff0c;换言之&#xff0c;栅格化一个三角形。上一次作业中&#xff0c;在视口变化之后&#xff0…

Redis--13--缓存一致性问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 缓存一致性问题1、先更新缓存&#xff0c;再更新DB方案二&#xff1a;先更新DB&#xff0c;再更新缓存方案三&#xff1a;先删缓存&#xff0c;再写数据库推荐1&…

Python ctypes:揭秘高级Python与底层交互秘籍

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com ctypes是Python标准库中的外部函数库&#xff0c;允许Python调用动态链接库中的函数。它提供了与C兼容的数据类型和允许Python调用共享库中的函数&#xff0c;对系统级编程和与硬件交互非常有用。 基本用法 加…

基于Django框架搭建的协同过滤算法电影推荐网站-爬取的豆瓣电影数据

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介概述技术栈实现流程 二、功能三、系统四. 总结 一项目简介 # 电影推荐网站介绍 概述 该电影推荐网站是基于Django框架搭建的&#xff0c;旨在为用户提供个…

jdk1.8 hashmap源码阅读

目录 hashmap 成员变量 hashmap支持null键吗&#xff1f;为什么&#xff1f; 当扩容的时候&#xff0c;所有元素都会重新计算hash值吗&#xff1f; 怎么减少扩容次数 为什么node数组的大小是2的n次&#xff1f; 1.8和1.7的区别 1.8为啥要用红黑树&#xff1f; 扩容机制…