SpirngBoot开发常用知识

springboot开发常用知识

  • 命令行打包
  • SpringBoot打包插件
  • window端口命令
  • 临时属性设置
  • 热部署
    • 启动热部署
    • 热部署范围
  • 常用计量单位
  • 数据校验
  • 加载测试的专用属性
  • Web环境模拟测试
  • 如何发送虚拟请求
  • 业务层测试回滚
  • 随机产生测试用例
  • 内置数据源

命令行打包

  • 对SpringBoot项目进行打包命令行命令
mvn package

SpringBoot打包插件

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

通过打包插件打包出来的Boot应用程序,可以独立运行,在jar包的目录中将自己开发的东西放在classes文件下,依赖放在lib下,在上一级目录org中存放对应的类加载器相关文件以及运行所必须的工具包,能够通过独立操作运行jar包程序

window端口命令

端口命令

临时属性设置

带属性数启动SpringBoot

java -jar 工程名.jar --属性名=值
java -jar springboot.jar --server.port=80

通常在上线运维的时候需要用到临时的属性设置达到某些目的
携带多个属性启动SpringBoot,属性间使用空格分隔
临时工程属性必须是当前boot工程支持的属性,否则设置无效

  • 属性加载顺序

属性加载顺序
上述是按照从低到高进行排列
如何在程序运行的时候加一些临时属性:
在这里插入图片描述
选择选项
在这里插入图片描述
在其中添加临时属性

--server.port=8081

通过编程形式带参数启动SpringBoot程序,为程序添加运行参数

public static void main(String[] args){
String[] arg=new String[1];
arg[0]="--server.port=8081";
}

不携带参数启动SpringBoot程序:

public static void main(String[] args){
SpringApplication.run(application.class,arg);}

上述讲的是在本机开发中程序员自行进行的配置测试,但是在真正上线的时候用的却是另一套配置,那么这种情况怎么处理,难道还是写一些临时属性吗?
这里我们通过创建新的配置文件,在上线的时候对当前配置文件进行覆盖
这就牵扯到了配置文件的等级:
配置文件等级
在这里插入图片描述
这里的classpath是在类路径下的配置文件
而file是在工程目录下创建的目录

  • 资源目录下自定义配置文件

在资源目录下创建一个配置文件,如何让这个配置文件生效
在这里插入图片描述
在其中输入: --spring.config.name=ebark 这种是按照配置文件的名称进行修改的
还可以通过路径进行修改: --spring.config.location=路径

热部署

在项目中更改业务代码后无需重新启动服务器加载项目即可完成自动改变

启动热部署

添加依赖:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>

激活热部署:ctrl+F9
关于热部署:
重启:自定义开发代码,包含类,页面,配置文件等,加载位置restart类加载器
重载:jar包,加载位置base类加载器
热部署仅仅加载当前开发者自定义开发的资源,不加载jar资源

  • 自动激活热部署

在这里插入图片描述
将Build project automatically勾选
然后按下ctrl+alt+shift+/
在这里插入图片描述
在这里插入图片描述
进行勾选

热部署范围

默认不进行热部署的目录列表
在这里插入图片描述
在配置文件中可以进行范围的设置:
设置不参与热部署的文件

devtools:restart:exclude: static/**,...
  • 关闭热部署功能:

在配置文件中进行关闭

devtools:restart:exclude: static/**,...enabled: false 

常用计量单位

SpringBoot支持JDK8提供的时间与空间计量单位

@ConfigurationProperties(prefix="servers")
public class ServerConfig{
//设置时间的单位@DurationUnit(ChronoUnit.MINUTES)private Duration serverTimeOut;
//设置数据存储容量的单位@DataSizeUnit(DataUnit.MEGABYTES) //设置存储容量的单位private Datasize dataSize;
}

数据校验

在进行业务之前对数据都进行一个有效的数据校验,可以提高配置或者业务数据的安全性

添加数据校验的依赖并使用hibernate框架提供的校验器做实现类

        <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId></dependency>

使用注解 @Vaildated注解类表明对类进行数据校验
在属性上方通过注解进行校验规格说明

@Vaildated
public class ServerConfig{@Max(value=4545,message="最大值不能超过4545")private int port; 
}

加载测试的专用属性

在测试阶段加载一些自己的专有属性

@SpringBootTest(properties={"test.prop=testValue1"},args={"--test.prop=testValue2"})
public class PropertiesAndArgsTest{
@value("${test.prop}")	
private String msg;
}

因为优先级的缘故使用args中的属性设置

Web环境模拟测试

在测试类中,无法进行web环境下的开发测试,无法启用端口进行测试,我们通过给出模拟端口进行web开发测试
模拟端口:

@SpringBootTest(webEnvironment=SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebTest{
}

如何发送虚拟请求

在测试中,如何用虚拟的请求进行测试

@SpringBootTest
//开启虚拟MVC调用
@AutoConfigureMockMVC
public class WebTest{
@Test
//注入一个MockMvc对象就可以进行虚拟请求
void test1(@Autowired MockMvc mvc){
//模拟一个虚拟的http请求
MockHttpServletRequestBuilder builder=MockHttpServletRequestBuilders.get("/");
//执行对应的请求
mvc.perform(builder);
}
}
  • 设定预期值,与真实值进行比较,成功则测试通过
@SpringBootTest
//开启虚拟MVC调用
@AutoConfigureMockMVC
public class WebTest{
@Test
//注入一个MockMvc对象就可以进行虚拟请求
void test1(@Autowired MockMvc mvc){
//模拟一个虚拟的http请求
MockHttpServletRequestBuilder builder=MockHttpServletRequestBuilders.get("/");
//执行对应的请求
ResultActions action=mvc.perform(builder);//定义本次调用的预期值
StatusResultMachers status=MockMvcResultMatchers.status();
//预计本次调用成功的:状态200
ResultMathcher ok =status.isOK();
//添加预计值到本次过程中进行匹配
action.andExpect(ok);
}
}

业务层测试回滚

在项目开发的工程中,如果出现在测试中测试数据但是会出现最后项目运行的时候造成测试类中的数据影响数据库,这个时候可以通过在测试类中添加事务的回滚避免这种现象的发生

@springBootTest
//添加事务注解
@Transactional
@Rollback(true)  //控制默认进行回滚
public class Test2{
}

随机产生测试用例

在配置文件中配置随机测试的数据:

testcase:book:id: ${random.int}name: ${random.value}

然后在测试类中加载随机数据

@Compoment
@Data
@ConfigurationProperties(prefix="testcase.book")
public class Bookcase{
private int id;
private String name;
}

注意:一般测试开发的时候配置在多环境下进行

内置数据源

前面我们数据库连接都采用的阿里巴巴的druid数据源进行开发,如果我们不再使用它,那么系统会采用内置的数据源:

  1. HikariCP
  2. Tomcat提供DataSource
  3. Commons DBCP

例如使用HikariCP:

Spring:datasource:url: ...hikari: driver:username:password:# 连接池的最大数量maximum-pool-size: 50

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

适用于 Windows 10 的 10 大免费数据恢复软件

数据丢失可能是一场噩梦&#xff0c;尤其是在涉及重要文件和文档时。无论是由于意外删除、系统崩溃还是病毒攻击&#xff0c;找到适合 Windows 10 的文件夹恢复软件都可以在恢复丢失的数据方面发挥重要作用。在本指南中&#xff0c;我们将探索适用于 Windows 10 用户的 10 大免…

[STL-list]介绍、与vector的对比、模拟实现的迭代器问题

一、list使用介绍 list的底层是带头双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。与其他的序列式容器相比(array&#xff0c;vector&#xff0c;deque)&#xff0c;list通常在任意位置进行…

[Apple Vision Pro]开源项目 Beautiful Things App Template

1. 技术框架概述&#xff1a; - Beautiful Things App Template是一个为visionOS设计的免费开源软件&#xff08;FOSS&#xff09;&#xff0c;用于展示3D模型画廊。 2. 定位&#xff1a; - 该模板作为Beautiful Things网站的延伸&#xff0c;旨在为Apple Vision Pro用户…

CNAS软件测试公司有什么好处?如何选择靠谱的软件测试公司?

CNAS认可是中国合格评定国家认可委员会的英文缩写&#xff0c;由国家认证认可监督管理委员会批准设立并授权的国家认可机构&#xff0c;统一负责对认证机构、实验室和检验机构等相关机构的认可工作。 在软件测试行业&#xff0c;CNAS认可具有重要意义。它标志着一个软件测试公…

C# 如何修改项目名称

目录 背景具体步骤1、Visual Studio中修改项目名和程序集名称以及命名空间2、修改项目文件夹名3、修改解决方案里项目的路径4、再次打开解决方案&#xff0c;问题解决步骤总结 名词解释解决方案&#xff08;Solution&#xff09;项目&#xff08;Project&#xff09;程序集&…

浏览器工作原理与实践--虚拟DOM:虚拟DOM和实际的DOM有何不同

虚拟DOM是最近非常火的技术&#xff0c;两大著名前端框架React和Vue都使用了虚拟DOM&#xff0c;所以我觉得非常有必要结合浏览器的工作机制对虚拟DOM进行一次分析。当然了&#xff0c;React和Vue框架本身所蕴含的知识点非常多&#xff0c;而且也不是我们专栏的重点&#xff0c…

JavaWeb前端基础(HTML CSS JavaScript)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. HTML 1.1 HTML基础 结构 头<head>身体<body> 内容 图片<img>段落<p>图标<link> 标签 单标签双标签 常用标签 div&#xff1a;分割块span&#xff1a;只占需要的大小p&…

sqlserver问题记录

今天在利用sql查询数据时出现如下错误 在执行批处理时出现错误。错误消息为: 引发类型为“System.OutOfMemoryException”的异常。 症状 使用 SSMS 运行返回大量数据的 SQL 查询时&#xff0c;会收到类似于以下内容的错误消息&#xff1a; 执行批处理时出错。 错误消息为&…

nginx工作原理解析

目录 1、master-workers 的工作机制介绍 2、master-workers 的机制的好处 3、设置多少个 worker 4、最大连接数和支持的最大并发数的计算 1、master-workers 的工作机制介绍 nginx在启动后&#xff0c;会有一个master进程和一个或者多个相互独立的worker进程 过来的请求由…

C++模仿qq界面

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置窗口的大小this->resize(645,497);//设置窗口名字this->setWindowTitle("QQ");//设置窗口图标this->setWindowIcon(QIcon("C:\\zhouzhouMyfile\\qt_proj…

Linux网络编程: TCP协议之SACK与D-SACK详解

一、参考RFC https://www.ietf.org/rfc/rfc2018 https://www.ietf.org/rfc/rfc2883.txt 二、SACK选项&#xff08;RFC2018&#xff09; SACK实现的需要发送方和接收方协作。为此&#xff0c;TCP首部实际上定义了两种选项&#xff1a;SACK允许选项、SACK选项。 SACK允许选项…

突破校园网限速:使用 iKuai 多拨分流负载均衡 + Clash 代理(内网带宽限制通用)

文章目录 1. 简介2. iKuai 部署2.1 安装 VMware2.2 安装 iKuai(1) 下载固件(2) 安装 iKuai 虚拟机(3) 配置 iKuai 虚拟机(4) 配置 iKuai(5) 配置多拨分流 2.3 测试速度 3. Clash 部署(1) 配置磁盘分区(2) 安装 Docker(3) 安装 Clash(4) 设置代理 4. 热点&#xff1a;一起瓜分互…

Redis基本概念

什么是Redis Redis&#xff08;Remote Dictionary Server &#xff09;&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 Redis的用处 缓存 缓存现在几…

shell脚本2

变量 变量是在程序中保存用户数据的一段内存存储空间&#xff0c;变量名是内存空间的首地址 字母、数字、下划线组成&#xff0c;不能以数字开头 原则&#xff1a;直接使用&#xff0c;不需要变量声明 格式&#xff1a;变量名 变量的值 环境变量 关闭窗口即会失效 若要永久生…

数据结构—红黑树

红黑树介绍 红黑树&#xff08;Red Black Tree&#xff09;是一种自平衡二叉查找树。由于其自平衡的特性&#xff0c;保证了最坏情形下在 O(logn) 时间复杂度内完成查找、增加、删除等操作&#xff0c;性能表现稳定。 在 JDK 中&#xff0c;TreeMap、TreeSet 以及 JDK1.8 的 …

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成 目录 数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成&#xf…

深度学习实践(一)基于Transformer英译汉模型

本文目录 前述一、环境依赖二、数据准备1. 数据加载程序解析word_tokenize()将字符串分割为一个个的单词&#xff0c;并由列表保存。 2. 构建单词表程序解析&#xff08;1&#xff09;将列表里每个子列表的所有单词合并到一个新列表&#xff08;没有子列表&#xff09;中。&…

RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表

RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表 文章目录 RabbitMQ3.13.0起支持MQTT5.0协议及MQTT5.0特性功能列表1. MQTT概览2. MQTT 5.0 特性1. 特性概要2. Docker中安装RabbitMQ及启用MQTT5.0协议 3. MQTT 5.0 功能列表1. 消息过期1. 描述2. 举例3. 实现 2. 订阅标识…

浅聊java集合框架中的java.util.LinkedList

java集合框架总览 Java集合框架是一个用来代表和操纵集合的统一架构&#xff0c;它为管理和组织对象的集合提供了一组类和接口。这个框架包含三个主要部分&#xff1a;接口、实现和算法。 接口&#xff1a; Collection&#xff1a;这是集合框架的根接口&#xff0c;定义了集…

亚马逊运营必看!如何运用自养号测评获得买家评论转销量?

作为亚马逊卖家&#xff0c;相信大家对亚马逊的产品星级评分 (Rating) 都不陌生&#xff0c;这几颗亮眼的星星&#xff0c;不仅可以让你的Listing脱颖而出&#xff0c;获得足够多、足够高的产品评分&#xff0c;也是促使消费者下单的重要因素之一。 那么&#xff0c;亚马逊运营…