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

Spring Boot 应用开发入门

一、Spring Boot简介
Spring Boot 是一个基于 Spring 框架的开源 Java 基础框架,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种快速、便捷的方式来创建独立、生产级的基于 Spring 框架的应用程序。它通过提供一系列的“启动器”依赖,帮助开发者避免了繁琐的依赖管理和配置。Spring Boot 还自动配置 Spring 和第三方库,使得开发者可以专注于编写业务代码。

## 二、搭建开发环境
### 1. 安装Java开发工具包(JDK)
Spring Boot 需要 Java 环境的支持,因此首先需要安装 JDK。你可以访问 Oracle 官网下载适合你操作系统的 JDK 版本。安装完成后,需要配置环境变量,使得在命令行中可以使用 `java` 和 `javac` 命令。

### 2. 安装集成开发环境(IDE)
推荐使用 IntelliJ IDEA 或 Eclipse 作为开发工具。这些 IDE 提供了对 Spring Boot 的良好支持,包括项目创建、代码提示、自动补全等功能。例如,在 IntelliJ IDEA 中,你可以直接通过“创建新项目”向导来创建 Spring Boot 项目。

### 3. 安装Maven或Gradle
Maven 和 Gradle 是常用的构建工具,用于管理项目的依赖和构建过程。Spring Boot 官方推荐使用 Maven。你可以访问 Maven 官网下载并安装 Maven,安装完成后,同样需要配置环境变量,使得在命令行中可以使用 `mvn` 命令。

## 三、创建第一个Spring Boot项目
### 1. 使用Spring Initializr创建项目
Spring Initializr 是一个在线工具,可以帮助你快速生成 Spring Boot 项目的初始结构。访问 [Spring Initializr](https://start.spring.io/) 网站,选择以下配置:
- **Project**: Maven Project
- **Language**: Java
- **Spring Boot**: 选择一个合适的版本(例如 2.7.5)
- **Group**: 输入你的组织名,例如 `com.example`
- **Artifact**: 输入项目名,例如 `demo`
- **Name**: 输入项目名称,例如 `demo`
- **Description**: 输入项目描述
- **Packaging**: 选择 Jar
- **Java**: 选择合适的 Java 版本(例如 11)
- **Dependencies**: 添加你需要的依赖,例如“Spring Web”

配置完成后,点击“Generate”按钮,下载生成的项目压缩包,然后解压到本地。

2. 导入项目到IDE
使用你的 IDE 打开刚才下载的项目文件夹。例如,在 IntelliJ IDEA 中,选择“Open”或“Import Project”,然后选择项目文件夹并导入。

 3. 编写简单的Hello World应用
在项目中创建一个新的 Java 类,例如 `HelloController.java`,并添加以下代码:

java
package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}
 

这段代码创建了一个简单的 RESTful 控制器,当访问 `/hello` 路径时,会返回“Hello, Spring Boot!”字符串。

4. 运行应用
在 IDE 中找到项目的主类 `DemoApplication.java`,它通常位于 `src/main/java/com/example/demo` 目录下。运行这个类的 `main` 方法,或者在命令行中使用以下命令启动应用:


mvn spring-boot:run
 

启动成功后,浏览器访问 `http://localhost:8080/hello`,你应该会看到“Hello, Spring Boot!”的输出。

## 四、配置Spring Boot应用
Spring Boot 应用的配置通常放在 `src/main/resources/application.properties` 或 application.yml` 文件中。例如,你可以修改应用的端口号:

properties
# application.properties
server.port=8081
 

或者使用 YAML 格式:

yaml
# application.yml
server:
  port: 8081
 

保存配置文件后,重启应用,应用就会使用新的端口号运行。

五、添加更多功能
1. 添加数据库支持
假设你想让应用连接到一个 MySQL 数据库,首先需要添加数据库驱动依赖。在 `pom.xml` 文件中添加以下依赖:

xml
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
 

然后在 `application.properties` 中配置数据库连接信息:

properties
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
 

2. 添加MyBatis框架
如果你使用 MyBatis 作为 ORM 框架,可以添加以下依赖:

xml
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.4</version>
</dependency>
 

然后配置 MyBatis:

properties
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true
 

接下来,你可以创建 Mapper 接口和对应的 XML 映射文件,实现数据库操作。

 六、打包和部署
1. 打包应用
使用 Maven 打包应用:


mvn clean package
 

这会在 `target` 目录下生成一个包含所有依赖的 JAR 文件,例如 `demo-0.0.1-SNAPSHOT.jar`。

2. 部署应用
将打包好的 JAR 文件上传到服务器,然后使用以下命令启动应用:

bash
java -jar demo-0.0.1-SNAPSHOT.jar
 

确保服务器上已经安装了相应版本的 JDK。

七、总结
通过本教程,你已经学会了如何创建一个简单的 Spring Boot 应用,包括搭建开发环境、创建项目、编写代码、配置应用、添加功能以及打包和部署。Spring Boot 的强大之处在于它的自动配置和简洁的开发方式,使得开发者可以快速上手并专注于业务逻辑的实现。
 

相关文章:

Spring Boot 应用开发入门

一、Spring Boot简介 Spring Boot 是一个基于 Spring 框架的开源 Java 基础框架&#xff0c;它简化了基于 Spring 的应用开发。Spring Boot 提供了一种快速、便捷的方式来创建独立、生产级的基于 Spring 框架的应用程序。它通过提供一系列的“启动器”依赖&#xff0c;帮助开发…...

【C语言】字符串函数详解

文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现&#xff08…...

【Vim Masterclass 笔记14】S07L29 + L30:练习课08 —— Vim 文本对象同步练习(含点评课内容)

文章目录 L29 Exercise 08 - Text Objects1 训练目标2 操作指令2.1. 打开 textobjectspractice.txt 文件2.2. 单词对象练习 Word Objects2.3. 区块对象 ( ) 练习 Block Object ( )2.4. 引用字符串练习 Quoted Strings2.5. 区块对象 [ ] 练习 Block Object [ ]2.6. 区块对象 <…...

非PHP开源内容管理系统(CMS)一览

在现代网站开发中&#xff0c;内容管理系统&#xff08;CMS&#xff09;是不可或缺的工具。虽然许多广泛使用的CMS&#xff08;如WordPress和Joomla&#xff09;是基于PHP开发的&#xff0c;但其他编程语言同样诞生了许多优秀的开源CMS&#xff0c;适用于不同需求和技术栈的项目…...

WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS

XSS跨站脚本攻击技术&#xff08;一&#xff09; XSS的定义 XSS攻击&#xff0c;全称为跨站脚本攻击&#xff0c;是指攻击者通过在网页中插入恶意脚本代码&#xff0c;当用户浏览该网页时&#xff0c;恶意脚本会被执行&#xff0c;从而达到攻击目的的一种安全漏洞。这些恶意脚…...

SQLAlchemy -批量插入时忽略重复

PostgreSQL 有一个很棒的INSERT() ON CONFLICT DO NOTHING子句,您可以将其与 SQLAlchemy 一起使用: from sqlalchemy.dialects.postgresql import insert session.execute(insert(MyTable).values(my_entries).on_conflict_do_nothing())MySQL 有类似的INSERT IGNORE子句,但…...

1月13日学习

[HITCON 2017]SSRFme 直接给了源代码&#xff0c;题目名称还是ssrf&#xff0c;那么该题大概率就是SSRF的漏洞&#xff0c;进行代码审计。 <?php// 检查是否存在 HTTP_X_FORWARDED_FOR 头&#xff0c;如果存在&#xff0c;则将其拆分为数组&#xff0c;并将第一个 IP 地址…...

Steam个人开发者注册备记

具体的注册过程有很多同志已经写过了&#xff0c;这里只写一点自己搞得有点费劲的地方。有点久了记得也不多了。 1.姓名用汉语拼音&#xff0c;参考护照上的&#xff0c;一般是Zhang Sanli这样的格式&#xff0c;姓一个单词&#xff0c;名字一个单词&#xff08;不管1个字还是…...

django在线考试系统

Django在线考试系统是一种基于Django框架开发的在线考试平台&#xff0c;它提供了完整的在线考试解决方案。 一、系统概述 Django在线考试系统旨在为用户提供便捷、高效的在线考试环境&#xff0c;满足教育机构、企业、个人等不同场景下的考试需求。通过该系统&#xff0c;用…...

Laravel 中 Cache::remember 的基本用途

在 Laravel 中&#xff0c;Cache::remember 方法用于缓存数据&#xff0c;以提高应用程序的性能。当需要从数据库或其他较慢的数据源中检索数据时&#xff0c;可以使用 Cache::remember 来检查请求的数据是否已经被缓存。如果数据已缓存&#xff0c;则直接从缓存中读取&#xf…...

前端进程和线程及介绍

前端开发中经常涉及到进程和线程的概念&#xff0c;特别是在浏览器中。理解这两个概念对于理解浏览器的工作机制和前端性能优化非常重要。以下是详细介绍&#xff1a; 1. 什么是进程和线程&#xff1f; 进程&#xff1a; 是操作系统分配资源的基本单位。一个程序启动后&#xf…...

OpenGL —— 基于Qt的视频播放器 - ffmpeg硬解码,QOpenGL渲染yuv420p或nv12视频(附源码)

运行效果 工程说明 源码 vertex.glsl...

Vue Router

Vue Router4 匹配 Vue3&#xff1b;Vue Router3 匹配 Vue2。 Vue Router 是 Vue.js 官方的路由管理器。Vue Router 基于路由和组件的映射关系&#xff0c;监听页面路径的变化&#xff0c;渲染对应的组件。 安装&#xff1a; npm install vue-router。 基本使用&#xff1a; …...

【黑灰产】人工查档业务产业链

2024年“查档”类型泄露事件快速上涨&#xff0c;涉及电商、外卖、社交、快递等行业数据。 近年来&#xff0c;陆续关注到非法数据交易产业链中游频繁出现的“查档”数据泄露情况&#xff0c;例如通过一个手机号&#xff0c;就可以查询这个手机号相关的所有身份信息&#xff0…...

114周二复盘 (178)

1、打新包&#xff0c;测试 2、白天为打包开始冲刺&#xff0c;问题不少&#xff0c;一堆细节问题&#xff0c; 但还是傍晚打包&#xff0c;不到3分钟&#xff0c;1.77G。 速度超预期。 3、开始测试。 基本还是达到预期的&#xff0c;但还是很多问题。 好在打包速度很快&am…...

day10_Structured Steaming

文章目录 Structured Steaming一、结构化流介绍&#xff08;了解&#xff09;1、有界和无界数据2、基本介绍3、使用三大步骤(掌握)4.回顾sparkSQL的词频统计案例 二、结构化流的编程模型&#xff08;掌握&#xff09;1、数据结构2、读取数据源2.1 File Source2.2 Socket Source…...

Python的秘密基地--[章节11] Python 性能优化与多线程编程

第11章&#xff1a;Python 性能优化与多线程编程 在开发复杂系统时&#xff0c;性能优化和并发编程是不可忽视的重点。Python 提供了多种工具和技术用于优化代码性能&#xff0c;并通过多线程、多进程等方式实现并发处理。本章将探讨如何在 Python 中提升性能&#xff0c;并实…...

drawDB docker部属

docker pull xinsodev/drawdb docker run --name some-drawdb -p 3000:80 -d xinsodev/drawdb浏览器访问&#xff1a;http://192.168.31.135:3000/...

探索图像编辑的无限可能——Adobe Photoshop全解析

文章目录 前言一、PS的历史二、PS的应用场景三、PS的功能及工具用法四、图层的概念五、调整与滤镜六、创建蒙版七、绘制形状与路径八、实战练习结语 前言 在当今数字化的世界里&#xff0c;视觉内容无处不在&#xff0c;而创建和编辑这些内容的能力已经成为许多行业的核心技能…...

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7&#xff1a;Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...