软件设计之SSM(11)

news2024/11/24 6:47:34

软件设计之SSM(11)

路线图推荐:
【Java学习路线-极速版】【Java架构师技术图谱】
尚硅谷新版SSM框架全套视频教程,Spring6+SpringBoot3最新SSM企业级开发
资料可以去尚硅谷官网免费领取

学习内容:

Springboot

  1. 配置文件
  2. 整合SpringMVC
  3. 整合Druid数据源
  4. 整合Mybatis
  5. 项目打包和运行

1、配置文件

统一配置管理

SpringBoot工程下,进行统一的配置管理,你想设置的任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(application.propertiesapplication.yml

配置文件中有固定的key,也可以自定义key,官方固定配置key点击此处

# application.properties 为统一配置文件
# 内部包含: 固定功能的key,自定义的key
# 此处的配置信息,我们都可以在程序中@Value等注解读取

# 固定的key
# 启动端口号
server.port=80 

# 自定义
spring.jdbc.datasource.driverClassName=com.mysql.cj.jdbc.driver
spring.jdbc.datasource.url=jdbc:mysql:///springboot_01
spring.jdbc.datasource.username=root
spring.jdbc.datasource.password=root

YAML配置文件

  1. 语法说明
    a. 数据结构用树形结构呈现,通过缩进来表示层级,
    b. 连续的项目(集合)通过减号 -来表示
    c. 键值结构里面的key/value对用冒号: 来分隔。
    d. YAML配置文件的扩展名是yaml 或 yml
  2. 配置案例
spring:
  jdbc:
    datasource:
      driverClassName: com.mysql.jdbc.Driver
      url: jdbc:mysql:///springboot_02
      username: root
      password: root
      
server:
  port: 80
features:
  - 登录
  - 注册

批量配置文件注入

@ConfigurationProperties是SpringBoot提供的重要注解, 他可以将一些配置属性批量注入到bean对象。在不使用批量配置之前,需要使用@Value("${spring.jdbc.datasource.password}")类型

1、在类上通过@ConfigurationProperties注解声明该类要读取属性配置
2、prefix="spring.jdbc.datasource" 读取属性文件中前缀为spring.jdbc.datasource的值。前缀属性名称和配置文件中的key必须要保持一致才可以注入成功

package com.atguigu.properties;

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

@Component
@ConfigurationProperties(prefix = "spring.jdbc.datasource")
public class DataSourceConfigurationProperties {

    private String driverClassName;
    private String url;
    private String username;
    private String password;
    }

多环境配置

在Spring Boot中,可以使用多环境配置来根据不同的运行环境(如开发、测试、生产)加载不同的配置。

  1. 属性文件分离:
    将应用程序的配置参数分离到不同的属性文件中,每个环境对应一个属性文件。比如:可以创建application-dev.propertiesapplication-prod.propertiesapplication-test.properties等文件对应不同环境。(YAML配置文件同理)
  2. 环境激活:
    application.properties中设置spring.profiles.active=xxx 来指定使用开发环境的配置
  3. 注意事项
    如果设置了spring.profiles.active,并且和application有重叠属性,以active设置优先。
    如果设置了spring.profiles.active,和application无重叠属性,application设置依然生效!

2、整合SpringMVC

实现过程

  1. 引入依赖:Spring Boot 项目通常使用 spring-boot-starter-web 依赖,它包括了 Spring MVC、Tomcat(默认嵌入式服务器)以及其他与 Web 开发相关的必要库。
  2. 创建 Spring Boot 启动类: 在 Spring Boot 项目中,创建一个主类,并添加 @SpringBootApplication 注解,它会自动扫描、配置项目中的组件
  3. 编写控制器使用 Spring MVC 的 @RestController 或 @Controller 来编写控制器。@RestController 自动返回 JSON 或 XML,而 @Controller 则用于返回视图。

Web相关配置(配置文件)

  • server.port: 指定应用程序的HTTP服务器端口号。默认情况下,Spring Boot使用8080作为默认端口。
  • server.servlet.context-path: 设置应用程序的上下文路径。这是应用程序在URL中的基本路径。默认情况下,上下文路径为空。
  • spring.mvc.view.prefixspring.mvc.view.suffix: 这两个属性用于配置视图解析器的前缀和后缀。视图解析器用于解析控制器返回的视图名称,并将其映射到实际的视图页面。spring.mvc.view.prefix定义视图的前缀,spring.mvc.view.suffix定义视图的后缀。
  • spring.resources.static-locations:配置静态资源的位置。静态资源可以是CSS、JavaScript、图像等。默认情况下,Spring Boot会将静态资源放在classpath:/static目录下。
  • spring.http.encoding.charsetspring.http.encoding.enabled: 这两个属性用于配置HTTP请求和响应的字符编码。spring.http.encoding.charset定义字符编码的名称(例如UTF-8),spring.http.encoding.enabled用于启用或禁用字符编码的自动配置。

静态资源处理

在WEB开发中我们需要引入一些静态资源 , 例如 : HTML , CSS , JS , 图片等 , 如果是普通的项目静态资源可以放在项目的webapp目录下。现在使用Spring Boot做开发 , 项目中没有webapp目录

默认的静态资源路径为:

· classpath:/META-INF/resources/

· classpath:/resources/

· classpath:/static/

· classpath:/public/

覆盖路径
自定义配置静态资源地址,但默认路径不生效

# web相关的配置
# https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties.server
server:
  # 端口号设置
  port: 80
  # 项目根路径
  servlet:
    context-path: /boot
spring:
  web:
    resources:
      # 配置静态资源地址,如果设置,会覆盖默认值
      static-locations: classpath:/webapp

3、整合Druid数据源

  1. 引入 Druid 依赖
  2. 配置 Druid 数据源:在 application.yml 或 application.properties 文件中进行 Druid 数据源的配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: your_username
    password: your_password
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      initial-size: 5  # 初始化时建立物理连接的个数
      max-active: 20   # 最大连接数
      min-idle: 5      # 最小连接数
      max-wait: 60000  # 连接池最大等待时间
      time-between-eviction-runs-millis: 60000  # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接
      min-evictable-idle-time-millis: 300000    # 配置一个连接在池中最小生存的时间
      validation-query: SELECT 1 FROM DUAL      # 检测连接是否有效的 SQL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      pool-prepared-statements: true            # 是否缓存 preparedStatement
      max-pool-prepared-statement-per-connection-size: 20  # 缓存的 preparedStatement 最大数
      filters: stat,wall,log4j  # 配置 Druid 监控的功能

4、整合Mybatis

  1. 添加依赖:在 pom.xml 中添加 MyBatis 相关的依赖。Spring Boot 官方提供了 mybatis-spring-boot-starter
  2. 配置数据源:在 application.yml 或 application.properties 文件中配置数据库连接信息
  3. 创建实体类:创建一个实体类,映射到数据库中的表;
  4. Mapper 接口实体类(POJO): Mapper 接口: 在 MyBatis 中,Mapper 接口负责定义与数据库交互的方法,并通过注解或 XML 映射 SQL 语句。
  5. 启动类中添加 @MapperScan 注解:为了让 Spring Boot 扫描到 MyBatis 的 Mapper 接口,可以在 Spring Boot 主类中使用 @MapperScan 注解指定接口所在包:
  6. 数据库操作:通过自动注入的 Mapper 接口,可以在服务层或控制器中实现数据库操作。

声明式事务和AOP直接导包即可

5、项目打包和运行

添加插件
在Spring Boot项目中添加spring-boot-maven-plugin插件是为了支持将项目打包成可执行的可运行jar包。

如果不添加spring-boot-maven-plugin插件配置,使用常规的java -jar命令来运行打包后的Spring Boot项目是无法找到应用程序的入口点,因此导致无法运行。

执行打包
在IDEA中的Maven窗口点击package
在这里插入图片描述

命令启动

java -jar命令用于在Java环境中执行可执行的JAR文件。下面是关于java -jar命令的说明:

命令格式:java -jar  [选项] [参数] <jar文件名>

在这里插入图片描述

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

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

相关文章

【学术会议征稿】第十届能源资源与环境工程研究进展国际学术会议(ICAESEE 2024)

第十届能源资源与环境工程研究进展国际学术会议&#xff08;ICAESEE 2024&#xff09; 2024 10th International Conference on Advances in Energy Resources and Environment 第十届能源资源与环境工程研究进展国际学术会议&#xff08;ICAESEE 2024&#xff09;定于2024年…

拓扑排序与入度为0的结点算法解析及实现

拓扑排序与入度为0的结点算法解析及实现 算法思想时间复杂度分析伪代码C语言实现环路检测结论拓扑排序是一种用于有向无环图(DAG, Directed Acyclic Graph)的重要操作,它可以对图中的结点进行排序,使得对于每一条有向边 (u, v),顶点 u 在排序中都出现在顶点 v 之前。本文介…

Qt和c++面试集合

目录 Qt面试 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 什么是Meta-Object系统&#xff1f; 什么是Qt的MVC模式&#xff1f; 1. QT中connect函数的第五个参数是什么&#xff1f;有什么作用&#xff1f; 3. 在QT中&#xff…

ROS2官方文档(2024-10-10最新版)

ROS 2 Documentation — ROS 2 Documentation: Jazzy documentation (armfun.cn) ROS 2 文档 — ROS 2 文档&#xff1a;Humble 文档 (armfun.cn) 翻译中文方法&#xff1a;使用windows11自带Edge浏览器打开&#xff0c;右上角点击翻译为中文

pytest框架之fixture测试夹具详解

前言 大家下午好呀&#xff0c;今天呢来和大家唠唠pytest中的fixtures夹具的详解&#xff0c;废话就不多说了咱们直接进入主题哈。 一、fixture的优势 ​ pytest框架的fixture测试夹具就相当于unittest框架的setup、teardown&#xff0c;但相对之下它的功能更加强大和灵活。 …

DBMS-3.3 SQL(3)——DML的INSERT、UPDATE、DELETE空值的处理DCL

本文章的素材与知识来自李国良老师和王珊老师。 DML——INSERT、UPDATE、DELETE 一. INSERT 1.语法 &#xff08;1&#xff09;INTO子句 &#xff08;2&#xff09;VALUES子句 &#xff08;3&#xff09;示例 2.插入子查询 若插入的是子查询则不需要VALUES子句 二. UPDATE …

大数据法律监督模型平台实现常态化法律监督

大数据法律监督模型平台充分挖掘大数据价值&#xff0c;利用大数据关联、碰撞、比对&#xff0c;从海量数据中自动筛查出法律监督线索&#xff0c;推送给检察官&#xff0c;有利于提升法律监督质效。 大数据法律监督模型平台建设目标 1、提升监察机关主动监督、精准…

基于DCGM+Prometheus+Grafana的GPU监控方案

目录 前言一、指标导出器1、DCGM&#xff1a;获取远程节点的信息 2、 DCGM-Exporter收集多节点信息更改收集指标 二、 Prometheus - From metrics to insight修改配置文件查看收集结果 三、Grafana仪表板展示导入数据源创建仪表板更多仪表板 前言 基于DCGM&#xff08;NVIDIA …

[SAP ABAP] LIKE TABLE OF

LIKE TABLE OF语句是用来参照结构体(工作区)对象定义内表数据类型的语句 在SAP ABAP中有标准表&#xff0c;排序表和哈希表三种内表数据类型 *定义标准表 DATA: <ty_tab_standard_name> LIKE [STANDARD] TABLE OF <dtype> [WITH NON-UNIQUE KEY <k1 k2 ... kn…

Python自动给课本文字标注拼音

环境&#xff1a; Ubuntu20.04&#xff0c;ubuntu20.04自带python版本 3.8.10&#xff0c;pip的版本是 20.0.2 pip install pypinyin # 安装失败&#xff0c;检查更新pip确保pip是最新版本&#xff1a; pip install --upgrade pip 检查是否安装成功 pip show pypinyin pinyin…

【电路笔记】-求和运算放大器

求和运算放大器 文章目录 求和运算放大器1、概述2、反相求和放大器3、同相求和放大器4、减法放大器5、应用5.1 音频混合器5.2 数模转换器 (DAC)6、总结1、概述 在我们之前有关运算放大器的大部分文章中,仅将一个输入应用于反相或非反相运算放大器的输入。在本文中,将讨论一种…

Python从入门到高手6.1节-字符串的定义与编码

目录 6.1.1 理解字符串 6.1.2 字符串的类型名 6.1.3 字符的数字编码 5.1.4 常用的字符编码 6.1.5 字符串的默认编码 6.1.6 字符串的编码与解码 6.1.7 转义字符详解 6.1.8 对字符串进行迭代 6.1.9 大神薯条老师 6.1.1 理解字符串 在Python中使用英文引号括住的都是字符…

CAS存在的问题及在Java中的解决方式

CAS 介绍 CAS 可以保证对共享变量操作的原子性 CAS全称Compare And Swap&#xff0c;比较与交换&#xff0c;是乐观锁的主要实现方式。CAS在不使用锁的情况下实现多线程之间的变量同步。ReentrantLock内部的AQS和原子类内部都使用了CAS。 CAS算法涉及到三个操作数&#xff1a;需…

ICDE 2024最新论文分享|BEEP:容量约束下能够对抗异常干扰的航运动态定价系统

论文简介 本推文详细介绍了上海交通大学高晓沨教授和陈贵海教授团队发表在顶级学术会议ICDE 2024上发表的最新论文《Corruption Robust Dynamic Pricing in Liner Shipping under Capacity Constraint》&#xff0c;该论文的学生作者为胡永祎、李雪嫣、魏熙锴&#xff0c;合作…

Mac电脑word文档误删,4个方法快速恢复

对于使用Mac的用户来说&#xff0c;丢失重要的Word文档可能会为学习或工作带来严重的影响。不过&#xff0c;幸运的是&#xff0c;关于mac word 文档恢复方法还是有很多的&#xff0c;通常帮助Mac用户轻松找回丢失的word文档。接下来&#xff0c;小编将介绍一些在Mac上恢复丢失…

dayu_widgets-加载组件:MLoading和MLoadingWrapper

一、使用场景 点击按钮加载数据&#xff0c;但是查询数据需要一定的耗时&#xff0c;这段时间需要显示加载中的UI来进行遮罩。 二、使用效果 三、使用案例 # 学习笔记 MLoading控件 import asyncio from PySide2.QtWidgets import QWidget, QApplication, QVBoxLayout, QPus…

2024双十一究竟买什么比较好?为您精选五款双十一必购好物清单!

2024年的双十一购物狂欢节即将到来&#xff0c;许多人已经开始思考在这个一年一度的购物盛宴中究竟应该选购哪些商品。为了帮助大家更好地把握这次购物机会&#xff0c;我们精心为您挑选了五款双十一期间必购的好物清单&#xff0c;确保您能够买到物超所值的宝贝&#xff01; …

作业4-23

文章目录 标题1标题2 标题1 该不该好吧 标题2 写的PHP <?phpnamespace App\Http\Controllers;use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; us…

文心一言 VS 讯飞星火 VS chatgpt (366)-- 算法导论24.3 8题

八、给定带权重的有向图 G ( V &#xff0c; E ) G(V&#xff0c;E) G(V&#xff0c;E) &#xff0c;其权重函数为 w : E → ( 0 &#xff0c; 1 &#xff0c; 2. … &#xff0c; W ) w:E→(0&#xff0c;1&#xff0c;2.…&#xff0c;W) w:E→(0&#xff0c;1&#xff0c…

RK3568 buildroot系统在安装popt出错的问题

RK3568 buildroot系统在安装popt出错的问题 简介 使用 buildroot 系统给 RK3568 制作系统的时候,编译系统到 popt 这个组件时,编译出错 故障现象 gzip: popt-1.16.tar.gz: not in gzip format 上面的报错就是说 gzip 认为这个压缩包不是可以识别的格式 问题复现 我们进…