当前位置: 首页 > news >正文

开发测试框架一 - 创建springboot工程及基础操作

一、创建及运行方式

1. 从官网导入:

注意:由于我的java版本是1.8;所以选中了spring2.7.14;如果你的java版本是9及以上,选中spring3相关的同时Java 版本也要对应起来

2. 创建第一个get请求

 创建Controller  package及类,创建以下的代码:

package com.example.aitestmini.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;//与前端请求的类
@RestController
public class firstController {//需求:get请求,路径/first, 前端显示hello springboot@GetMapping("/first")String first(){return "Hello Spring!";// http://localhost:8080/first}
}

运行:

运行AitestMiniApplication的run()方法

在浏览器访问http://localhost:8080/first,应该是展示hello spring

8080端口被占用,使用以下命令查看占用端口的pid:
lsof -i :8080
执行下面命令kill调进程:
kill -9 pid

3. 打包

mvn package 
执行以上命令,会在target/目录下自动生成jar包

4. 运行方式

方式一:
之前已经说过了,执行run()方法
方式二:
java -jar target/aitest-mini-0.0.1-SNAPSHOT.jar
运行以上命令,jar是刚才打出来的jar包
方式三:
mvn spring-boot:run
执行以上命令

二、端口管理

1. 常见端口实名方式

如果配置文件不声明端口,默认按照80801. application.properties配置文件管理端口:
server.port=80812. application.yml配置文件管理端口:
server:port: 80823. 运行命令声明端口
mvn clean package
java -jar -Dserver.port=8083 target/aitest-mini-0.0.1-SNAPSHOT.jar

2. 不同环境配置不同的端口

  • 针对环境创建不同的配置文件

 

 

 3. 运行不同环境端口的方式

1. application.properties管理:spring.profiles.active=dev2. application.yml管理
spring:profiles:active: dev3. 在pom文件管理<profiles><profile><id>dev</id><properties><profilesActive>dev</profilesActive></properties></profile><profile><id>qa</id><properties><profilesActive>qa</profilesActive></properties><!-- 默认qa环境--><activation><activeByDefault>true</activeByDefault></activation></profile></profiles>添加上面的依赖,在application.properties管理:
spring.profiles.active=@profilesActive@

三、Get请求Demo

1. 普通get请求的声明方式

1. 方法名前面使用:@GetMapping("/first")
2. 方法名前面使用:@RequestMapping(path = "/first",method = RequestMethod.GET)
@RestController
public class firstController {//需求:get请求,路径/first, 前端显示hello springboot
//    @GetMapping("/first")@RequestMapping(path = "/first",method = RequestMethod.GET)String first(){return "Hello Spring!";// http://localhost:8080/first}
}

2. 带有参数的Get请求

需求:
http://localhost:8081/topic/{id}
对应浏览器显示地址:{id}为内容
// 如果不想写@PathVariable("id")里面的id,需要保证传入的id->sid
@RestController
public class BaseGetWithIdController {@GetMapping("/topic/{id}")String getTopic(@PathVariable("id") String tid){return "请求的id为 " + tid + " 的内容!!!";}
}

3. 在queryParam拼接

需求:http://localhost:8081/native?s={sid}
对应浏览器显示地址:这是一个本国地址为:{sid}的内容
@GetMapping("/native")String getNative(@RequestParam("s") String sid){return "这是一个本国地址为:" + sid + " 的内容!";}

升级:

如果当s=66,打印不一样的内容:

@GetMapping("/native")String getNative(@RequestParam("s") String sid){return "这是一个本国地址为:" + sid + " 的内容!";}@GetMapping(path = "/native", params = {"s=66"})String getNative1(@RequestParam("s") String sid){return "这是一个本国地址为:" + sid + " 的内容!getNative1";}

4. 在controller前面加@RequestMapping("/t")

效果:相当于全部的链接前面加了/t会被自动识别

代码:

 @RequestMapping(path = "/first",method = RequestMethod.GET)String first(){return "Hello Spring!";// http://localhost:8080/first}

5. PathVariable参数非必填

//1. @PathVariable(value = "did",required = false)中的required默认是true,可以设置为false
//2. 声明完成之后, 对应的访问路径会有2中,需在GetMapping里面说明value = {"/topic/{did}/u","/topic/u"}@GetMapping(value = {"/topic/{did}/u","/topic/u"})String getTopic1(@PathVariable(value = "did",required = false) String topid,@RequestParam(defaultValue = "66") int sid){return "请求的id为 " + topid + " 的内容!!!并且参数sid为" + sid + "的内容!!!";}//http://localhost:8081/t/topic/99/u//http://localhost:8081/t/topic/u

6. RequestParam非必填及提供默认值

    @GetMapping("/top/{city}/{year}")String getRUIWithPara(@PathVariable int year,@PathVariable String city,@RequestParam(defaultValue = "GDP",required = false) String desc,@RequestParam(defaultValue = "45666") int money){return "{"+ year + "}年{" + city + "}人均{" + desc + "}为:{" + money + "}";}
1. desc非必填,但是GetMapping的值只有一个,因为desc的类型不是PathVariable
2. @RequestParam(defaultValue = "GDP",required = false) String desc说明RequestParam的required如果为false可以非必填

相关文章:

开发测试框架一 - 创建springboot工程及基础操作

一、创建及运行方式 1. 从官网导入&#xff1a; 注意&#xff1a;由于我的java版本是1.8&#xff1b;所以选中了spring2.7.14&#xff1b;如果你的java版本是9及以上&#xff0c;选中spring3相关的同时Java 版本也要对应起来 2. 创建第一个get请求 创建Controller package及…...

【IMX6ULL驱动开发学习】08.马达驱动实战:驱动编写、手动注册平台设备和设备树添加节点信息

目录 一、使用设备树 1.1 修改设备树流程 二、手动创建平台设备 三、总结&#xff08;附驱动程序&#xff09; 前情提要&#xff1a;​​​​​​​【IMX6ULL驱动开发学习】07.驱动程序分离的思想之平台总线设备驱动模型和设备树_阿龙还在写代码的博客-CSDN博客 手动注册…...

直方图均衡化和自适应直方图均衡化

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 均衡化是数字图像处理中常用的一种技术&#xff0c;用于增强图像的视觉效果和对比度。&#xff0c;今天我们将实现对同一张图像的直方图均衡化和自适应直方图均衡化处理&#xff0c;学习一下两者的的基本原理和实现过程&a…...

京东门详一码多端探索与实践 | 京东云技术团队

本文主要讲述京东门详业务在支撑过程中遇到的困境&#xff0c;面对问题我们在效率提升、质量保障等方向的探索和实践&#xff0c;在此将实践过程中问题解决的思路和方案与大家一起分享&#xff0c;也希望能给大家带来一些新的启发 一、背景 1.1、京东门详介绍 1.1.1、京东门…...

数据挖掘 | 零代码采集房源数据,支持自动翻页、数据排重等

1 前言 城市规划、商业选址等应用场景中经常会对地区房价、地域价值进行数据分析&#xff0c;其中地区楼盘房价是分析数据中重要的信息参考点&#xff0c;一些互联网网站上汇聚了大量房源信息&#xff0c;通过收集此类数据&#xff0c;能够对地区房价的分析提供参考依据。 如何…...

迪米特法则

迪米特法则&#xff0c;也称为最少知识原则&#xff08;Law of Demeter&#xff09;&#xff0c;是面向对象设计中的一个原则&#xff0c;旨在降低对象之间的耦合性&#xff0c;提高系统的可维护性和可扩展性。该原则强调一个类不应该直接与其它不相关的类相互交互&#xff0c;…...

云积天赫|AIGC+营销的排头兵

AIGC生成式人工智能&#xff0c;正逐渐成为人们关注的焦点。AIGC的出现&#xff0c;标志着人工智能已经进入了一个全新的时代。AIGC的出现&#xff0c;也为营销行业带来了新的活力。那么企业该怎么利用这次AIGC浪潮&#xff0c;成为AIGC营销的排头兵呢&#xff1f;      “…...

Oracle 数据库备份

1、使用管理员账号创建对应的directory目录 登录数据库 sqlplus / as sysdba 创建directory create or replace directory dumpdir as F:\container; 2、给用户赋予使用该目录的权限 grant read,write on directory dumpdir to Scott; 查看创建的目录位置 select * fro…...

【C++】模板template

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ C       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1f6f0;️欢…...

智能工厂:适应不断变化的制造世界

制造业已经从过去传统的装配线工艺流程中走了很长一段路。随着技术的进步和工业 4.0 的兴起&#xff0c;制造业正在迅速发展&#xff0c;以满足现代世界不断变化的需求。近年来出现的一个关键概念就是“智能工厂”。在这篇文章中&#xff0c;我们将探讨什么是智能工厂、它是如何…...

大数据课程I3——Kafka的消息流与索引机制

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的消息流处理; ⚪ 掌握Kafka的索引机制; ⚪ 掌握Kafka的消息系统语义; 一、Kafka消息流处理 1. Producer 写入消息 流程说明: 1. producer 要向Kafka生产消息,需要先通过…...

LVGL学习笔记 28 - 键盘keyboard

目录 1. 设置关联文本框 2. 设置模式 2.1 LV_KEYBOARD_MODE_TEXT_LOWER 2.2 LV_KEYBOARD_MODE_TEXT_UPPER 2.3 LV_KEYBOARD_MODE_SPECIAL 2.4 LV_KEYBOARD_MODE_NUMBER 2.5 LV_KEYBOARD_MODE_USER_1 ~ LV_KEYBOARD_MODE_USER_4 3. 使能弹窗模式 4. 更改按键布局 5. 事…...

【Microsoft 支持】【数据库-MySql】当您尝试从大于 5000 的 TCP 端口连接时收到错误 WSAENOBUFS (10055)

​ 一、转载原文 When you try to connect from TCP ports greater than 5000 you receive the error ‘WSAENOBUFS (10055)’ Symptoms If you try to set up TCP connections from ports that are greater than 5000, the local computer responds with the following WSAE…...

【学会动态规划】最长湍流子数组(23)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…...

【网络编程·网络层】IP协议

目录 一、IP协议的概念 二、IP协议的报头 1、四位首部长度 2、16位总长度&#xff08;解包&#xff09; 3、8位协议&#xff08;分用&#xff09; 4、16位首部校验和 5、8位生存时间 6、32位源IP和32位目的IP 7、4位版本/8位服务类型 8、16位标识 9、3位标志 10、1…...

HTML详解连载(7)

HTML详解连载&#xff08;7&#xff09; 专栏链接 [link](http://t.csdn.cn/xF0H3)下面进行专栏介绍 开始喽结构伪类选择器作用 :nth-child&#xff08;公式&#xff09;作用举例 伪元素选择器作用注意&#xff1a; PxCoook作用盒子模型-重要组成部分 盒子模型-边框线属性名属性…...

一文打通redis中的String类型

目录 基本介绍 基本语法 常用命令解读 概述 SETNX key value SETNX key value GETRANGE key start end GETSET key value GETBIT key offset MGET key1 [key2..] STRLEN key 基本介绍 ①String是Redis最基本的类型,一个key对应一个value。 ②String类型是二进制…...

优测云服务平台|【压力测试功能升级】轻松完成压测任务

一、本次升级主要功能如下&#xff1a; 1.多份报告对比查看测试结果 2.报告新增多种下载格式 Word格式Excel格式 3.新增多种编排复杂场景的控制器 漏斗控制器并行控制器事务控制器仅一次控制器分组控制器集合点 4.新增概览页面&#xff0c;包含多种统计维度 二、报告对比…...

UseEffect中使用setState更新后获取的值为何依然是更新前

刚开始学习React的新手经常遇到这样的问题&#xff0c;使用useState去更新某个数据&#xff0c;然后再取更新后的数据&#xff0c;取发现数据并没有更新。 在 React 中&#xff0c;useState 的更新确实是异步的&#xff0c;这是由 React 的内部机制所决定的。React 会对多次状…...

去掉鼠标系列之一: 语雀快捷键使用指南

其实应该是系列之二了&#xff0c;因为前面写了一个关于Interlij IDEA的快捷键了。 为什么要写这个了&#xff0c;主要是觉得一会儿用鼠标&#xff0c;一会儿键盘&#xff0c;一点儿不酷&#xff0c;我希望可以一直用键盘&#xff0c;抛开鼠标。后面陆续记录一下各个软件的快捷…...

如何在Windows电脑上轻松安装安卓应用:APK-Installer完全指南

如何在Windows电脑上轻松安装安卓应用&#xff1a;APK-Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接安装安卓应用吗&#x…...

mmdetection2.11.0实战:如何用VOC和COCO数据集精准计算每个类别的mAP(附避坑指南)

mmdetection2.11.0实战&#xff1a;VOC与COCO数据集mAP计算全解析与避坑指南 在目标检测领域&#xff0c;mAP&#xff08;mean Average Precision&#xff09;是衡量模型性能的核心指标。但不同数据集&#xff08;如VOC和COCO&#xff09;的评估标准差异&#xff0c;常常让研究…...

终极指南:p5.js Web Editor 如何让创意编程触手可及

终极指南&#xff1a;p5.js Web Editor 如何让创意编程触手可及 【免费下载链接】p5.js-web-editor p5.js Web Editor, officially launched! 项目地址: https://gitcode.com/gh_mirrors/p5/p5.js-web-editor 欢迎来到 p5.js Web Editor 的世界&#xff01;这是一个专为…...

为什么你的代码编辑器需要更好的开源字体配置?完整编程字体优化指南

为什么你的代码编辑器需要更好的开源字体配置&#xff1f;完整编程字体优化指南 【免费下载链接】source-code-pro Monospaced font family for user interface and coding environments 项目地址: https://gitcode.com/gh_mirrors/so/source-code-pro 作为一名开发者&a…...

别再搞混了!CTP API生产版、评测版和SimNow环境,新手避坑指南(附最新v6.7.9配置)

CTP API版本选择与SimNow环境实战指南&#xff1a;从配置误区到高效开发 第一次打开CTP官方文档时&#xff0c;那些密密麻麻的版本号和晦涩的参数说明是否让你感到窒息&#xff1f;作为量化交易的基础设施&#xff0c;CTP API的版本选择和环境配置直接决定了开发效率甚至实盘稳…...

Pixel Mind Decoder 创意写作助手:分析经典文学中的情绪节奏与模仿生成

Pixel Mind Decoder 创意写作助手&#xff1a;分析经典文学中的情绪节奏与模仿生成 1. 当AI遇见文学创作 写作最难把握的是什么&#xff1f;很多作家会告诉你&#xff1a;是情绪的节奏。就像音乐需要起伏的旋律&#xff0c;一部好作品也需要精心设计的情感曲线。但传统创作中…...

当游戏语言成为障碍:如何用XUnity.AutoTranslator打破语言壁垒

当游戏语言成为障碍&#xff1a;如何用XUnity.AutoTranslator打破语言壁垒 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 想象一下&#xff0c;你终于等到了期待已久的日式角色扮演游戏&#xff0c;但打…...

思源宋体TTF:开源中文字体的技术突破与商业价值重构

思源宋体TTF&#xff1a;开源中文字体的技术突破与商业价值重构 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字化内容爆炸的今天&#xff0c;中文字体的选择直接影响信息传递的…...

Harmonyos应用实例215: 条件概率模拟器

7. 条件概率模拟器 功能简介:通过模拟抽卡片、掷骰子等实验,展示条件概率的计算方法,验证贝叶斯定理。支持调整实验参数,实时显示概率结果和理论值对比,帮助学生理解条件概率的概念。 ArkTS代码: @Entry @Component struct ConditionalProbability {@State private...

用Python处理全球植被数据?手把手教你将BEPS模型的.img文件转成GeoTIFF

从.img到GeoTIFF&#xff1a;Python生态数据处理实战指南 引言&#xff1a;当生态学遇上数据科学 在生态学研究领域&#xff0c;BEPS模型生成的全球植被生产力数据&#xff08;GPP/NEP/NPP&#xff09;是理解碳循环和生态系统功能的重要基础。然而&#xff0c;许多研究者第一次…...