使用Maven搭建Spring Boot框架
文章目录
- 前言
- 1.环境准备
- 2.创建SpringBoot项目
- 3.配置Maven
- 3.1 pom.xml文件
- 3.2 添加其他依赖
- 4. 编写代码
- 4.1 启动类
- 4.2 控制器
- 4.3 配置文件
- 5.运行项目
- 6.打包与部署
- 6.1 打包
- 6.2 运行JAR文件
- 7.总结
前言
Spring Boot 是一个用于快速构建 Spring 应用程序的框架,它简化了 Spring 应用的初始搭建和开发过程。Maven 是一个强大的项目管理和构建工具,可以帮助我们管理依赖、构建项目。本文将详细介绍如何使用 Maven 搭建一个 Spring Boot 项目。
1.环境准备
在开始之前,确保你的开发环境已经安装了以下工具:
-
JDK:Spring Boot 3.x 需要 JDK 17 或更高版本。建议安装 JDK 21。
-
Maven:用于项目依赖管理和构建。
-
IDE:推荐使用 IntelliJ IDEA 或 Eclipse。
2.创建SpringBoot项目
项目架构
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/cy/demo/
│ │ │ ├── App.java # Spring Boot 启动类
│ │ │ ├── controller/ # 控制器层
│ │ │ ├── service/ # 服务层
│ │ │ ├── mapper/ # MyBatis Mapper 接口
│ │ │ └── entity/ # 实体类
│ │ └── resources/
│ │ ├── static/ # 静态资源
│ │ ├── templates/ # 模板文件
│ │ ├── application.yml # 配置文件
│ │ └── mapper/ # MyBatis Mapper XML 文件
│ └── test/ # 测试代码
├── pom.xml # Maven 配置文件
└── target/ # 编译输出目录
3.配置Maven
3.1 pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.cy</groupId><artifactId>oa-server</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 引入springboot的父项目,统一版本管理,避免版本冲突--><parent>
<!-- groupid:表示依赖属于Spring Boot官方组织--><groupId>org.springframework.boot</groupId>
<!-- Spring Booot父项目模版--><artifactId>spring-boot-starter-parent</artifactId><version>3.2.1</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.3.0</version></dependency><!-- 分页依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>2.1.0</version></dependency></dependencies></project>
3.2 添加其他依赖
- 分页插件
<!-- 分页依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>2.1.0</version></dependency>
- JWT支持
<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.3.0</version>
</dependency>
4. 编写代码
4.1 启动类
App.java 是Spring Boot启动类
package org.cy.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class,args);}}
4.2 控制器
创建一个简单控制器 MyController.java:
package org.cy.demo.api;import org.cy.demo.common.vo.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author YunR* @date */
@RestController
public class MyController {@GetMapping("/t") //返回地址public R<?> test(){return R.OK("这是测试数据");}}
4.3 配置文件
在application.yml中配置数据库连接MyBatis:
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/oadbusername: rootpassword: rootmybatis:mapper-location: classpath:mapper/**/*.xml
logging:level:root: infoweb: traceorg.cy.demo: debugpagehelper:reasonable: truehelper-dialect: mysql
server:port: 9999# 自定义配置oa:token:expire-time:99999999999 # 令牌过期时间anonurls: # 无需登录直接可以访问的资源路径,可以使用ant格式- /security/login # 表示放行登录接口地址- /t
5.运行项目
- 在 IDE 中右键点击 App.java,选择 Run。
- 打开浏览器,访问 http://localhost:9999/t,你会看到返回的字符串"这是测试数据“”。


6.打包与部署
6.1 打包
在项目根目录下运行以下命令,将项目打包为 JAR 文件:
mvn clean package
打包后的 JAR 文件会生成在 target 目录下
6.2 运行JAR文件
java -jar target/demo-0.0.1-SNAPSHOT.jar
7.总结
通过本文,你已经学会了如何使用 Maven 搭建一个 Spring Boot 项目,并编写了一个简单的 Web 应用。Spring Boot 的强大功能可以帮助你快速构建现代化的 Java 应用程序。
相关文章:
使用Maven搭建Spring Boot框架
文章目录 前言1.环境准备2.创建SpringBoot项目3.配置Maven3.1 pom.xml文件3.2 添加其他依赖 4. 编写代码4.1 启动类4.2 控制器4.3 配置文件 5.运行项目6.打包与部署6.1 打包6.2 运行JAR文件 7.总结 前言 Spring Boot 是一个用于快速构建 Spring 应用程序的框架,它简…...
将docker容器打包为.tar包
1. 创建打包脚本 #!/bin/bash # 设置 -e 使得脚本在遇到错误时停止执行 set -e# 必要的参数 exported_container_name"needed_export_container_name_or_id" # 需要被导出的容器的名称或id image_save_name"my_custom_image_name:v25.03.03" # 镜像需…...
SYSTEM文件夹下的文件
sys文件夹下的.c和.h文件里的函数 最重要的倒数第二个 deley文件夹下的.c和.h文件 Systick工作原理 系统滴答定时器是在内核里的 每来一个时钟信号,计数器减一 F1系列时钟源是HCLK(就是AHB总线上的时钟信号) Systick控制寄存器 Systick重装…...
GPPT: Graph Pre-training and Prompt Tuning to Generalize Graph Neural Networks
GPPT: Graph Pre-training and Prompt Tuning to Generalize Graph Neural Networks KDD22 推荐指数:#paper/⭐⭐# 动机 本文探讨了图神经网络(GNN)在迁移学习中“预训练-微调”框架的局限性及改进方向。现有方法通过预训练(…...
【SegRNN 源码理解】PMF的多步并行预测
位置编码 elif self.dec_way "pmf":if self.channel_id:# m,d//2 -> 1,m,d//2 -> c,m,d//2# c,d//2 -> c,1,d//2 -> c,m,d//2# c,m,d -> cm,1,d -> bcm, 1, dpos_emb torch.cat([self.pos_emb.unsqueeze(0).repeat(self.enc_in, 1, 1),self.cha…...
构建自己的AI客服【根据用户输入生成EL表达式】
要实现一个基于对话形式的AI客服系统,该系统能够提示用户输入必要的信息,并根据用户的输入生成相应的EL(Expression Language)表达式编排规则,您可以按照以下步骤进行设计和开发。本文将涵盖系统架构设计、关键技术选型…...
(50)[HGAME 2023 week2]before_main
[HGAME 2023 week2]before_main nss:3501 我们进入那个sub_12EB然后我们发现这个就是base64加密 我们取得qword_4020: 0CxWsOemvJq4zdk2V6QlArj9wnHbt1NfEX/3DhyPoBRLY8pK5FciZau7UMIgTSG 很显然这个是自定义映射base64.然后我们代入我们之前写的base64自定义映射代码 enc:A…...
机器学习数学基础:39.样本和隐含和残差协方差矩阵
假设我们研究学生的数学成绩、英语成绩和学习时间之间的关系。收集了100名学生这三项数据作为样本。 样本协方差矩阵 计算得到的样本协方差矩阵如下(假设数据简化): [ V a r ( 数学 ) C o v ( 数学 , 英语 ) C o v ( 数学 , 学习时间 ) C …...
java之http传MultipartFile文件
【需求】前端请求后端做文件上传或者excel上传,后端不解析直接把MultipartFile传给第三方平台,通过http的方式该怎么写 import org.springframework.web.multipart.MultipartFile;import java.io.*; import java.net.HttpURLConnection; import java.ne…...
深入解析SpringMVC中Http响应的实现机制
在Web应用开发中,处理HTTP请求并返回相应的HTTP响应是核心任务之一。SpringMVC作为Java生态中广泛使用的Web框架,提供了灵活且强大的机制来处理HTTP请求和生成HTTP响应。本文将深入探讨SpringMVC中如何实现HTTP响应的返回,涵盖从控制器方法的…...
构建一个支持精度、范围和负数的-Vue-数字输入框
分析并实现一个支持精度、范围和负数控制的数字输入框。 背景 在很多业务中,我们经常需要使用数字输入框,通常这些输入框会涉及到数字校验,比如限制输入范围、设置小数精度、是否允许负数等。每次写表单时,都需要重复定义这些校…...
尚硅谷爬虫note14
一、scrapy scrapy:为爬取网站数据是,提取结构性数据而编写的应用框架 1. 安装 pip install scrapy 或者,国内源安装 pip install scrapy -i https://pypi.douban.com/simple 2. 报错 报错1)building ‘twisted.te…...
1438. 绝对差不超过限制的最长连续子数组
目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题2.4 代码复盘 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 滑动窗口 2.2 代码尝试 class Solution { public:int longestSubarray(vector<int>& nums, int limit) {int cou…...
ZCC5090EA适用于TYPE-C接口,集成30V OVP功能, 最大1.5A充电电流,带NTC及使能功能,双节锂电升压充电芯片替代CS5090EA
概要: ZCC5090EA是一款5V输入,最大1.5A充电电流,支 持双 节 锂 电 池 串 联 应 用 的 升 压 充 电 管 理 I C 。ZCC5090EA集成功率MOS,采用异步开关架构, 使其在应用时仅需极少的外围器件,可有效减少整体 …...
Dify 开源大语言模型应用开发平台使用(二)
文章目录 说明Dify 使用报告1. 应用创建——专业的锂电池相关知识解答1.1 平台简介1.2 创建应用 2. 知识库、工作流、变量、节点与编排节点详解2.1 知识库管理2.2 工作流配置2.3 变量管理2.4 节点与编排节点 3. 测试和调试3.1 单元测试3.2 日志与监控3.3 实时调试3.4 性能测试 …...
【LangFuse】数据集与测试
1. 在线标注 2. 上传已有数据集 import json# 调整数据格式 {"input":{...},"expected_output":"label"} data [] with open(my_annotations.jsonl, r, encodingutf-8) as fp:for line in fp:example json.loads(line.strip())item {"i…...
【Python】如何解决Jupyter Notebook修改外部模块后必须重启内核的问题?
“为什么我修改了Python模块的代码,Jupyter Notebook却看不到变化?” 一、问题现象:令人抓狂的开发体验 假设你正在开发一个图像处理项目,项目结构如下: project/ ├── utils/ │ └── image_processor.py └…...
Redis 篇
一、数据结构 二、持久化方式 Redis 提供了两种主要的持久化方式,分别是 RDB(Redis Database)和 AOF(Append Only File),此外,还可以同时使用这两种方式以增强数据安全性,以下为你…...
React + TypeScript 实战指南:用类型守护你的组件
TypeScript 为 React 开发带来了强大的类型安全保障,这里解析常见的一些TS写法: 一、组件基础类型 1. 函数组件定义 // 显式声明 Props 类型并标注返回值 interface WelcomeProps {name: string;age?: number; // 可选属性 }const Welcome: React.FC…...
从零开始:Linux环境下如何制作静态库与动态库
个人主页:chian-ocean 文章专栏-Linux 前言 动静态库是编程中两种主要的库类型,它们用于帮助开发者复用已有的代码,而不需要每次都从头开始编写。它们的主要区别在于链接和加载的时机、方式以及使用场景 库 库就是一些已经写好并且经过测试…...
5大场景解锁智能群管理:如何让LuckyLilliaBot提升社群运营效率80%
5大场景解锁智能群管理:如何让LuckyLilliaBot提升社群运营效率80% 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot LuckyLilliaBot作为一款基于OneBot11协议的NTQQ插件,能够将…...
QLVideo终极指南:让macOS Finder完美预览所有视频格式
QLVideo终极指南:让macOS Finder完美预览所有视频格式 【免费下载链接】QuickLookVideo This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files. 项目地址: https://gitcod…...
PEI转染试剂及相关工具在生命科学研究中的应用解析【曼博生物官方代理Polysciences】
摘要:聚乙烯亚胺(PEI)转染试剂在基因递送、病毒载体生产等领域应用广泛。本文结合Polysciences相关产品体系,对PEI转染、微球技术及神经示踪染料等工具进行系统梳理。 关键词:PEI转染、聚乙烯亚胺、基因转染、HEK293、…...
AsrTools全攻略:革新语音转文字效率的智能解决方案
AsrTools全攻略:革新语音转文字效率的智能解决方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate tex…...
手指划过屏幕放大模型界面,环氧树脂层和纤维基体在激光路径下呈现出清晰的物理场分布。突然发现这个双层材料烧蚀模型跑得格外顺畅——看来前几天通宵调参没白费
comsol激光清洗、烧蚀双层材料 表面一层50μm厚度的环氧树脂(可更换成其他材料),基体材料为纤维材料。 添加功率为13W的激光进行清洗或烧蚀 模型非常成功、角度选择很奈斯在COMSOL里建模时有个小细节特别关键:把环氧树脂层的厚度参数设为全局变量。别小看…...
8_Harness驾驭工程实践:企业级落地与OpenAI案例解析
8_Harness驾驭工程实践:企业级落地与OpenAI案例解析 关键字: 企业级落地、OpenAI、Ryan Lopopolo、Codex、Harness Engineering、Citi Bank、Ancestry、Ulta Beauty、Agent-First开发、部署策略、自托管、成本优化、迁移路径、最佳实践、0行手写代码、百…...
OpenClaw与nanobot镜像结合:打造个人AI研究助手全流程
OpenClaw与nanobot镜像结合:打造个人AI研究助手全流程 1. 为什么需要个人AI研究助手? 作为一名经常需要阅读大量论文的研究者,我发现自己每天要重复处理许多机械性工作:在多个学术平台检索最新文献、下载PDF并分类存储、提取关键…...
微信支付商家券:从创建到核销的全链路开发实战
1. 微信支付商家券的核心价值与应用场景 商家券是微信支付为商户提供的数字化营销工具,本质上是一种电子优惠凭证。与传统的纸质优惠券相比,商家券最大的优势在于能够实现全链路数字化管理。我在帮一家连锁咖啡品牌接入商家券时发现,他们的线…...
如何为Rainmeter贡献多语言翻译:完整指南
如何为Rainmeter贡献多语言翻译:完整指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,支持全球用户通过多语言界…...
大数据产品实战:用户画像系统的设计与实现
大数据产品实战:用户画像系统的设计与实现 关键词:用户画像、标签体系、大数据平台、精准营销、数据挖掘 摘要:用户画像系统是大数据时代企业实现“以用户为中心”运营的核心工具,它通过给用户“贴标签”的方式,将复杂的用户行为转化为可量化、可分析的数字特征。本文将从…...
