当前位置: 首页 > 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;抛开鼠标。后面陆续记录一下各个软件的快捷…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程

鸿蒙电脑版操作系统来了&#xff0c;很多小伙伴想体验鸿蒙电脑版操作系统&#xff0c;可惜&#xff0c;鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机&#xff0c;来体验大家心心念念的鸿蒙系统啦&#xff01;注意&#xff1a;虚拟…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...