《Techporters架构搭建》-Day01 第一个RESTful API接口

微服务架构搭建

  • 搭建微服务架构
  • 分析一下项目的build.gradle
  • 添加Demo接口

搭建微服务架构

首先搭建系统管理模块,模块结构如下

tps-cloud
└── tps-system -- 系统管理模块└── tps-system-api -- 系统管理模块公共api模块└── tps-system-biz -- 系统管理模块业务处理模块[9001]

1.新建Project
① 选择 File -> New -> Project菜单,如下图所示:
在这里插入图片描述
② 选择 Gradle类型,输入名字为 tps-cloud,并点击 Next按钮,如下图所示:
在这里插入图片描述
③ 选择当前稳定的Spring Boot 3.3.1版本,点击Create
在这里插入图片描述
④打开 项目tps-cloud,删除 src 文件夹,然后右击tps-cloud项目创建tps-system模块,如下图所示:
在这里插入图片描述
填写模块名称,选择Gradle
在这里插入图片描述在这里插入图片描述
⑤删除tps-system的src文件夹,并在tps-system模块下新建 tps-system-api 与tps-system-biz模块 ,整个过程和“新建tps-system模块”是一致的,如下图所示:
在这里插入图片描述
在这里插入图片描述
⑥ 服务创建完成后,整体代码结构
在这里插入图片描述
⑦ 点击IDEA右边的Gradle,可以看到项目之间不是父子结构,所以需要调整项目依赖关系
在这里插入图片描述
⑧ 修改tps-cloud项目下settings.gradle文件,通过include命令,删除所有子模块的settings.gradle文件,一个项目该文件只需要一个就行。

rootProject.name = 'tps-cloud'
//系统模块
include 'tps-system'
//系统模块下子模块
include 'tps-system:tps-system-api'
include 'tps-system:tps-system-biz'

分析一下项目的build.gradle

#
plugins {id 'java'id 'org.springframework.boot' version '3.3.1'id 'io.spring.dependency-management' version '1.1.5'
}group = 'com.tps.cloud'
version = '0.0.1-SNAPSHOT'java {toolchain {languageVersion = JavaLanguageVersion.of(21)}
}repositories {mavenCentral()
}dependencies {implementation 'org.springframework.boot:spring-boot-starter'testImplementation 'org.springframework.boot:spring-boot-starter-test'testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}tasks.named('test') {useJUnitPlatform()
}

plugins(插件)
Gradle 插件的作用,主要有以下几个方面:

  • 添加任务到项目中,可对项目进行测试、编译、打包;
  • 添加依赖到项目中,可用来配置项目构建过程中需要的依赖;
  • 可以向项目中现有的对象类型添加新的扩展属性、方法等,可方便项目的配置和构建优化,比如 Android 项目构建中的 android{}就是 Android Gradle 插件为 Project 对象添加的一个扩展;
  • 可以对项目进行一些约定,如使用 Java Gradle插件可以约定 src/main/java 目录下源代码的存放位置,在编译的时候就可以编译指定目录下的 Java 源代码文件。

repositories (仓库)
Gradle默认使用Maven的中心库下载依赖包;
如果从中心库下载jar包的速度慢,我们可以通过阿里云或者腾讯云的Maven库镜像来加速,当然也可以使用你公司内部的Maven库私服来加速。

maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }

dependecies(依赖)
我们只需要按照下面的格式即可引入依赖:

implementation group: '***', name: '***', version: '***'

或简写成:

implementation 'group:name:version'

因为插件,只要被Spring Boot所管理的依赖,版本也无须维护,可以更加精简的写成:

implementation 'group:name'

如果你想找某个依赖包,可以通过https://mvnrepository.com/查找添加依赖
在这里插入图片描述一般情况下,我们会把复制来的版本号给去掉,以防Spring Boot已经对它做了版本管理,这样我们就能直接下载兼容性良好的依赖包;如果去掉版本后不能下载依赖包,意味着Spring Boot没有做该包的版本管理,这时我们按照自己的需要添加合适的版本号。
下面看看其他几个依赖的关键字,一般情况下我们不需要过多的关注。
测试依赖:testImplementation,测试相关的依赖,使用testImplementation,规则和普通依赖一致。

dependencies {//...testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

编译依赖:compileOnly,只在编译期起效的依赖。

dependencies {//...compileOnly 'org.projectlombok:lombok'//...
}

运行时依赖:runtimeOnly,只在运行时起效的依赖。

dependencies {//...runtimeOnly 'com.mysql:mysql-connector-j'//...
}

添加Demo接口

① 在 com.tps.cloud.system包,新建一个 DemoController 类,并新建一个 /demo/get 接口。代码如下:

package com.tps.cloud.system.controller;@RestController
@RequestMapping("/demo")
public class DemoController {@GetMapping("/get")public String get() {return "恭喜你,你的接口通了!";}
}

② 上面代码肯定是报错,因为很多注解我们并没有引入相对应的Spring启动器,通过IDEA快捷键,可以查看IDEA建议我们引入spring-boot-starter-web
在这里插入图片描述
③ 在模块tps-system-biz下的build.gradle文件添加spring-boot-starter-web依赖,然后Gradle reload一下,Gradle会去下载依赖包在这里插入图片描述
④ 现在我们可以引入相关依赖包,通过错误提示
在这里插入图片描述
引入相关类

package com.tps.cloud.system.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/demo")
public class DemoController {@GetMapping("/get")public String get() {return "恭喜你,你的接口通了!";}
}

⑤ 将tps-system-biz服务运行起来,默认接口是8080
在这里插入图片描述
通过Postman或者Apifox调用接口http://localhost:8080/demo/get,查看返回结果。
在这里插入图片描述
现在我们已经成功启动一个微服务,并且调通 一个RESTful API 接口,当然这个接口目前的功能很简单,下一章我们将数据库集成进来,做一个表的增删改查功能

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

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

相关文章

单片机设计_自行车码表(AT89C51, LCD1602, DS1302,霍尔传感器)

想要更多项目私wo!!! 一、电路设计 系统采用51单片机LCD1602液晶DS1302时钟模块霍尔传感器电机按键模块蜂鸣器报警模块设计而成。 产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(给单片机提供时钟周期)。 …

Zabbix介绍和架构

目录 一.Zabbix简介 1.为什么需要监控 2.需要监控什么 3.常见的监控工具 4.Zabbix使用场景及系统概述 5.Zabbix 架构 6.Zabbix工作流程 7.Zabbix 术语 二. 部署安装zabbix 三.zabbix 配置文件 一.Zabbix简介 1.为什么需要监控 运维行业有句话:“无监控、不运维”&am…

AGV平面坐标系变换公式及实例

1、AGV坐标系简介 如上图,小车前后对角是有激光雷达的,其坐标系称为激光坐标系,采用极坐标系体现。中间为车体坐标系,激光坐标系相对于车体坐标系关系不变;左下角是地图坐标系,小车扫图后,建立的…

探索智慧职校教职工管理的教师信息功能

在智慧职校的教职工管理体系中,教师信息管理犹如教师职业生涯的数字罗盘,引领着教师个人成长与学校教学质量的双轨并进。这一模块的核心精髓在于对教师基本信息的精细捕捉与维护,确保每位教师的个人资料,诸如姓名、性别、出生日期…

RK3588核心板怎么选?为项目挑选合适核心板的五大建议

在信息爆炸的互联网海洋中,面对琳琅满目的RK3588核心板产品,您是否也曾感到眼花缭乱,难以抉择?究竟哪一款能够完美契合您的智能设备开发项目,让您在最短时间内找到最合适的伙伴,减少研发试错,加…

Day58:并查集 108.冗余连接 109.冗余连接II

108. 冗余连接 时间限制:1.000S 空间限制:256MB 题目描述 树可以看成是一个图(拥有 n 个节点和 n - 1 条边的连通无环无向图)。 现给定一个拥有 n 个节点(节点标号是从 1 到 n)和 n 条边的连通无向图&…

wandb本地部署

pip install --upgrade wandbwandb server start(如果失败了) docker pull wandb/local:latest启动 docker run --rm -d -v wandb:/vol -p 8080:8080 --name wandb-local wandb/local:latest打开http://localhost:8080/signup (有可能失败&…

LeetCode热题100刷题16:74. 搜索二维矩阵、33. 搜索旋转排序数组、153. 寻找旋转排序数组中的最小值、98. 验证二叉搜索树

74. 搜索二维矩阵 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int row matrix.size();int col matrix[0].size();for(int i0;i<row;i) {//先排除一下不存在的情况if(i>0&&matrix[i][0]>target…

Qt Style Sheets-入门

Qt 样式表是一种强大的机制&#xff0c;允许您自定义小部件的外观&#xff0c;这是在通过子类化QStyle已经可行的基础上的补充。Qt 样式表的概念、术语和语法在很大程度上受到 HTML级联样式表 (CSS)的启发&#xff0c;但适用于小部件的世界。 概述 样式表是文本规范&#xff0…

教室管理系统的开发与实现(Java+MySQL)

引言 教室管理系统是学校和培训机构日常运营中不可或缺的工具。本文将介绍如何使用Java、Swing GUI、MySQL和JDBC开发一个简单而有效的教室管理系统&#xff0c;并涵盖系统的登录认证、教室管理、查询、启用、暂停和排课管理功能。 技术栈介绍 Java&#xff1a;作为主要编程…

实战项目:仿muduo库实现并发服务器

目录 项目初始与项目演示HTTP服务器基础认识Reactor模式基础认识单Reactor单线程模式认识单Reactor多线程模式认识多Reactor多线程模式认识 目标定位总体大模块划分server模块的管理思想Buffer子模块Socket子模块Channel子模块Connection子模块Acceptor子模块TimerQueue子模块P…

FinClip 率先入驻 AWS Marketplace,加速全球市场布局

近日&#xff0c;凡泰极客旗下的小程序数字管理平台 FinClip 已成功上线亚马逊云科技&#xff08;AWS&#xff09;Marketplace。未来&#xff0c;FinClip 将主要服务于海外市场的开放银行、超级钱包、财富管理、社交电商、智慧城市解决方案等领域。 在全球市场的多样性需求推动…

免费视频批量横转竖

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具&#xff0c;提供高效便捷的视频批量横转竖&#xff0c;主要功能&#xff1a; 导入与删除文件&#xff1a;轻松导入多个视频文件&#xff0c;删除不必要的文件。暂停与继续处理&#xff1a;随时暂停和继续处理。…

快速了解死锁及如何解决死锁问题

目录 什么是死锁&#xff1f; 死锁代码示例 产生死锁的条件&#xff1a; 死锁的危害&#xff1a; 如何解决死锁问题&#xff1f; 1、预防死锁&#xff08;破坏上述4个产生死锁的条件&#xff09;&#xff1a; 2、银行家算法 3、死锁的检测、解除 4、采用超时机制 什么…

JMeter介绍、安装配置以及快速入门

文章目录 1. JMeter简介2. JMeter安装配置3. JMeter快速入门 1. JMeter简介 Apache JMeter是一款开源的压力测试工具&#xff0c;主要用于测试静态和动态资源&#xff08;如静态文件、服务器、数据库、FTP服务器等&#xff09;的性能。它最初是为测试Web应用而设计的&#xff…

[C++]优先级队列

1 .了解优先级队列 优先级队列是一种容器适配器&#xff0c;根据一些严格的弱排序标准&#xff0c;专门设计使其第一个元素始终是它所包含的元素中最大的元素。 此上下文类似于堆&#xff0c;其中可以随时插入元素&#xff0c;并且只能检索最大堆元素&#xff08;优先级队列中顶…

基于ffmepg的视频剪辑

1.ffmpeg命令实现视频剪辑 FFmpeg是一个非常强大的视频处理工具&#xff0c;可以用来剪辑视频。以下是一个基本的FFmpeg命令行示例&#xff0c;用于剪辑视频&#xff1a; $ ffmpeg -i ./最后一滴水.mp4 -ss 0:0:20 -t 50 -c copy output.mp4-i ./最后一滴水.mp4 输入文件  …

小试牛刀-区块链WalletConnect协议数据解密

目录 1.编写目的 2.工作原理 3.分析过程 3.1 websokcet连接 3.2 连接后的消息 3.3 获取sym_key 3.4 解密数据 Welcome to Code Blocks blog 本篇文章主要介绍了 [WalletConnect协议数据解密] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 1.编写目的 最近在…

matlab y = 1/√x图像和y = 1/x图像

matlab y 1/√x图像和y 1/x图像 y 1/√x与y 1/x绘制结果y√x y 1/√x与y 1/x clc, clear, close all; length 3; axis_len 5;% Create a range of x values x linspace(0.01, length^2, 1000); % Avoid x 0 for 1/√x% Compute the corresponding y values y1 1 .…

链路聚合概述

目录 技术背景&#xff1a; 基本概念&#xff1a; 链路聚合的工作模式&#xff1a; 简介&#xff1a; 1&#xff09;Manual Load-balance&#xff08;手动负载分担&#xff09; 简介&#xff1a; 配置实施&#xff1a; 2&#xff09;LACP&#xff08;链路聚合控制协议&#xff…