使用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 前言 动静态库是编程中两种主要的库类型,它们用于帮助开发者复用已有的代码,而不需要每次都从头开始编写。它们的主要区别在于链接和加载的时机、方式以及使用场景 库 库就是一些已经写好并且经过测试…...
LLaMA论文里没细说的三个“小”改进:RMSNorm、SwiGLU和RoPE到底强在哪?
LLaMA模型三大底层优化技术解析:RMSNorm、SwiGLU与RoPE的设计哲学 当大多数人关注大语言模型的参数量级时,LLaMA团队却在微观架构层面做了一系列精妙改进。这些看似微小的技术选择,实则是支撑模型高效运行的关键支柱。本文将带您深入LLaMA的&…...
RISC-V开发板深度测评指南:从硬件解析到生态实战
1. 项目概述:一次深度参与RISC-V生态的实战机会最近,电子发烧友社区联合多家厂商发起的第二届RISC-V开发板测评大赛,吸引了圈内不少工程师和爱好者的目光。其中,昊芯(Haawking)作为一家专注于RISC-V处理器I…...
数据质量管理的过去、现在与未来:理解 2024 年数据测试、监控与数据可观察性
原文:towardsdatascience.com/the-past-present-and-future-of-data-quality-management-understanding-testing-monitoring-and-efd1350457eb?sourcecollection_archive---------1-----------------------#2024-05-25 数据领域正在发展,数据质量管理也…...
Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据)
更多请点击: https://kaifayun.com 第一章:Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据) Perplexity 作为面向研究与教育场景的AI原生搜索引擎,其语义理解深度与引用溯源能力显著…...
华为od机试 新系统-麻将基本胡牌型判断(C/C++/Py/Java/Js/Go)
麻将基本胡牌型判断 华为OD新系统机试真题 华为OD新系统上机考试真题 5月17号 100分题型 华为OD机试新系统真题目录点击查看: 华为OD机试新系统真题题库目录|机考题库 + 算法考点详解 题目内容 给定 14 14 14张麻将牌,只包含三种花色:万(用 1 1 1表示)、条(用...
STM32CubeMX配置FreeRTOS时,那个不起眼的定时器TIM16到底在干嘛?新手避坑指南
STM32CubeMX配置FreeRTOS时,那个不起眼的定时器TIM16到底在干嘛?新手避坑指南 第一次在STM32CubeMX里勾选FreeRTOS组件时,很多开发者会对配置页面底部那个"Hardware Timer"选项感到困惑——为什么默认选中了TIM16?这个看…...
Win11家庭版隐藏功能解锁:除了gpedit.msc,这些高级设置你也能用了
Win11家庭版隐藏功能深度解锁:从组策略到系统优化的高阶玩法 当你第一次在Win11家庭版中成功唤出组策略编辑器(gpedit.msc)时,面对密密麻麻的策略项是否感到无从下手?这就像拿到了一把万能钥匙,却不知道哪些…...
Hi3403开发板内核升级至Linux 6.6:驱动适配与稳定性调优实战
1. 项目概述:一次内核升级背后的工程实践最近,我们团队完成了对迅为iTOP-Hi3403开发板配套SDK的一次重要更新,将内核版本从之前的长期支持版(LTS)升级到了最新的Linux 6.6。这不仅仅是一个版本号的跳动,对于…...
Avogadro 2:解决跨平台化学建模可视化挑战的开源方案
Avogadro 2:解决跨平台化学建模可视化挑战的开源方案 【免费下载链接】avogadroapp Avogadro is an advanced molecular editor designed for cross-platform use in computational chemistry, molecular modeling, bioinformatics, materials science, and related…...
2026年电钢琴避坑指南|高性价比品牌型号推荐,新手必看!
电钢琴选购核心要点(快速避坑) 在推荐具体机型前,先明确4个选购关键指标,确保不踩坑: 1.键盘:必须88键逐级配重重锤键盘,避免毁手型。 2.复音数:至少128复音(避免弹奏复杂曲目时丢…...
