【Spring Boot】创建你的第一个 Spring Boot 应用

创建你的第一个 Spring Boot 应用

  • 1.环境配置
  • 2.步骤详解
  • 3.项目结构分析
    • 3.1 入口类 DemoApplication
    • 3.2 控制器 PathVariableController
    • 3.3 控制器 BasicController
    • 3.4 模型 User
  • 4.运行

Spring Boot 目前已经成为了 Java 开发领域的框架范式。本篇博客,我将带领大家一起创建一个 Spring Boot 的 Demo 应用。

1.环境配置

在开始之前,我们需要安装好编辑器 IDEA,以及配置好 Java 和 Maven 的环境。

环境/工具版本下载链接
IntelliJ IDEA 2023.3.4 2023.3.4 2023.3.4链接
jdk 1.8 1.8 1.8链接
maven 3.6.3 3.6.3 3.6.3链接

通过以下命令可以检验是否安装及配置成功。

在这里插入图片描述

🚀 具体如何安装不在本篇博文的讨论范围内,网上有很多的教程,但如果在安装过程中有问题,或者在本篇博文的实践中遇到了问题,可以在评论区给博主留言。

2.步骤详解

单击 IDEA 菜单栏中的 FileNewProject,再选择 Spring Initializr,做如下配置。

在这里插入图片描述
注意,Server URL 我们换成了 https://start.aliyun.com/,否则按照默认配置的 https://start.spring.ioJava 选不到 8

我们可以分别打开这两个网站看一下:

  • 🚀 https://start.spring.io

在这里插入图片描述

  • 🚀 https://start.aliyun.com/

在这里插入图片描述
默认选择的 Spring Boot 版本是 2.6.13。如果要添加依赖,也可以在这个窗口进行。比如,我们选中了 Lombok,Spring Boot 就会自动添加 Lombok,并下载依赖。

在这里插入图片描述
点击 Create,一个 Spring Boot 的 Demo 应用就创建好了,是不是非常迅速!

在这里插入图片描述

🚀 另外一种创建 Spring Boot 项目(这种方式估计很少使用):打开浏览器访问网站(即上面提到的网站),在其中选择依赖、版本和配置,然后生成工具包。生成完成后下载到本地电脑,将其导入开发软件中即可使用。

注意,我们这里的 Maven 配置用的不是默认的,否则下载依赖包会很慢,可以自行在 Maven 的 settings.xml 文件中配置阿里云镜像。

在这里插入图片描述

3.项目结构分析

初始化后的项目结构如下:

在这里插入图片描述

3.1 入口类 DemoApplication

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

3.2 控制器 PathVariableController

package com.example.demo.demos.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class PathVariableController {// http://127.0.0.1:8080/user/123/roles/222@RequestMapping(value = "/user/{userId}/roles/{roleId}", method = RequestMethod.GET)@ResponseBodypublic String getLogin(@PathVariable("userId") String userId, @PathVariable("roleId") String roleId) {return "User Id : " + userId + " Role Id : " + roleId;}// http://127.0.0.1:8080/javabeat/somewords@RequestMapping(value = "/javabeat/{regexp1:[a-z-]+}", method = RequestMethod.GET)@ResponseBodypublic String getRegExp(@PathVariable("regexp1") String regexp1) {return "URI Part : " + regexp1;}
}
  • package:代表包路径。PathVariableController 类在 com.example.demo.demos.web 包下。
  • import:代表在当前类引入其他类。以便用这个类创建对象或使用他们的方法。
  • @Controller:声明此类是一个 Spring MVC Controller 对象。
  • @RequestMapping:配置 URL 和方法之间的映射。可注解在类和方法上。注解在方法上的 @RequestMapping 路径会继承注解在类上的路径。

3.3 控制器 BasicController

package com.example.demo.demos.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class BasicController {// http://127.0.0.1:8080/hello?name=lisi@RequestMapping("/hello")@ResponseBodypublic String hello(@RequestParam(name = "name", defaultValue = "unknown user") String name) {return "Hello " + name;}// http://127.0.0.1:8080/user@RequestMapping("/user")@ResponseBodypublic User user() {User user = new User();user.setName("theonefx");user.setAge(666);return user;}// http://127.0.0.1:8080/save_user?name=newName&age=11@RequestMapping("/save_user")@ResponseBodypublic String saveUser(User u) {return "user will save: name=" + u.getName() + ", age=" + u.getAge();}// http://127.0.0.1:8080/html@RequestMapping("/html")public String html() {return "index.html";}@ModelAttributepublic void parseUser(@RequestParam(name = "name", defaultValue = "unknown user") String name, @RequestParam(name = "age", defaultValue = "12") Integer age, User user) {user.setName("zhangsan");user.setAge(18);}
}

3.4 模型 User

package com.example.demo.demos.web;public class User {private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

4.运行

单击打开 DemoApplication 入口类,然后单击第 7 行代码处的绿色按钮,在弹出的选项中选择 Run 'DemoApplication',启动 Spring Boot 应用程序。

在这里插入图片描述

  • 访问 http://127.0.0.1:8080/user/123/roles/222(这里的 8080 是默认的端口),在网页中就可以看到以下内容:

在这里插入图片描述

  • 访问 http://127.0.0.1:8080/html,在网页中就可以看到以下内容:

在这里插入图片描述

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

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

相关文章

layui table列表重载后保持进度条位置不变

使用layui的table表格组件时,当我们操作了某行的修改后,刷新了页面,进度条则跳回到最上面。 除了layui高版本应该内置有方法解决了此问题,但是低版本需要另外想办法解决。 具体解决方式如下: 1.在编辑操作成功前&am…

【MASM汇编语言快速入门】8086MASM汇编深入理解指令对标志位的影响

8086MASM汇编深入理解指令对标志位的影响 文章目录 8086MASM汇编深入理解指令对标志位的影响0. 指令对标志位影响1. 指令对标志位影响速查表2. flags标志寄存器: 标志位含义解读flags1. 状态标志cf, pf, af, zf, sf, of2. 控制标志df, if, tf 详解:1. 传送指令2. 算…

如何在IDEA 中设置背景图片

在IDEA 中设置背景图片,可以按照以下步骤操作: 1、打开 IntelliJ IDEA 软件,进入代码编辑主界面。 点击编辑窗口上方的“File”菜单项。 2、在下拉子菜单中,选择“Settings”选项(如果你使用的是 macOS,可…

Spark-Scala语言实战(1)

在之前的文章中,我们学习了如何在Linux安装Spark以及Scala,想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 Spark及Scala的安装https:/…

【智能算法】保姆级教程-如何使用CEC测试集,以及如何定义自己的优化问题

目录 1.准备工作2.使用CEC2005测试集3.自定义优化问题-无约束问题4.自定义优化问题-有约束问题5.代码实现 1.准备工作 一个CEC2005测试集 一个测试智能算法,比如麻雀搜索算法SSA 2.使用CEC2005测试集 以CEC2005测试集函数F7为例: 3.自定义优化问题…

solr/ES 分词插件Jcseg设置自定义词库

步骤: 1、找到配置文件jcseg-core/target/classes/jcseg.properties修改配置: 下载地址: https://gitee.com/lionsoul/jcseg#5-如何自定义使用词库 lexicon.path {jar.dir}/../custom-word 设置lexicon路径,我们这个配置可以自定义&#xf…

计算机网络-概述

文章目录 1.2 因特网概述1.2.1 网络、互连网(互联网)和因特网1.2.2 因特网发展的三个阶段1.2.4 因特网的组成 1.3 三种交换方式1.3.1 电路交换1.3.2 分组交换1.3.3 报文交换1.3.4 三种方式对比 1.4 计算机网络的定义1.5 计算机网络的性能指标1.5.1 速率1…

antd5 虚拟列表原理(rc-virtual-list)

github:https://github.com/react-component/virtual-list rc-virtual-list 版本 3.11.4(2024-02-01) 版本:virtual-list-3.11.4 Development npm install npm start open http://localhost:8000/List 组件接收 Props PropDescriptionTypeDefaultchildrenRender …

精读《手写 JSON Parser》

1 引言 JSON.parse 是浏览器内置的 API,但如果面试官让你实现一个怎么办?好在有人已经帮忙做了这件事,本周我们一起精读这篇 JSON Parser with Javascript 文章吧,再温习一遍大学时编译原理相关知识。 2 概述 & 精读 要解析…

【机器学习】分类模型的评价方法

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! #学习笔记# 目录 一、混淆矩阵(Confusion Matrix) 二、评估指标(Evaluation metrics) 1.正确率(accuracy) …

R统计学3 - 数据分析入门问题41-60

往期R统计学文章: R统计学1 - 基础操作入门问题1-20 R统计学2 - 数据分析入门问题21-40 41. R 语言如何做双坐标图? # 创建模拟数据 year <- 2014:2024 gdp <- data.frame(year, GDP = sort(rnorm(11, 1000, 100))) ur <- data.frame(year, UR = rnorm(11, 5, 1…

计算机网络(7)----应用层

目录 一.应用层的基本概念 1.应用层的基本概述 2.网络应用模型 &#xff08;1&#xff09;客户/服务器模型 &#xff08;2&#xff09;P2P模型 二.应用程序相关 1.DNS系统 &#xff08;1&#xff09;域名与域名服务器 &#xff08;2&#xff09;域名解析过程&#xff…

2024 第一届VCTF 纳新赛 Web方向 题解WP

hackjs 题目描述&#xff1a;A baby oldjs, just warm up. 附件给源码 const express require(express) const fs require(fs) var bodyParser require(body-parser); const app express() app.use(bodyParser.urlencoded({extended: true })); app.use(bodyParser.json…

CI/CD实战-git工具使用 1

版本控制系统 本地版本控制系统 集中化的版本控制系统 分布式版本控制系统 git官网文档&#xff1a;https://git-scm.com/book/zh/v2 Git 有三种状态&#xff1a;已提交&#xff08;committed&#xff09;、已修改&#xff08;modified&#xff09; 和 已暂存&#xff08;sta…

嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)

概述 本文主要讲述利用 NodeMCU-ESP8266 开发板和继电器通过手机 APP “ 点灯 • Blinker ” 制作一款能够由手机控制的WiFi 智能开关&#xff0c;从而实现智能物联。NodeMCU 是基于 Lua 的开源固件&#xff0c;ESP8266-NodeMCU是一个开源硬件开发板&#xff0c;支持WiFi功能&a…

OpenCV4.9.0开源计算机视觉库在 Linux 中安装

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 环境变量参考 下一篇&#xff1a;将OpenCV与gcc和CMake结合使用 引言&#xff1a; OpenCV是一个开源的计算机视觉库&#xff0c;由英特尔公司所赞助。它是一个跨…

深度学习-基于机器学习的情绪分析研究

概要 互联网技术的迅速发展使得社交平台逐渐成为热点事件中社会情感的枢纽。社会热点事件的舆论监管的其中一个重要环节就是能够准确分析民众的社会情绪。本文旨在探索可以基于文本大数据彻底分析民众对热点事件的社会情绪的模型和方法。先是从社交平台上借助文本大数据、对数据…

(一)Neo4j下载安装以及初次使用

&#xff08;一&#xff09;下载 官网地址&#xff1a;Neo4j Graph Database & AnamConnect data as its stored with Neo4j. Perform powerful, complex queries at scale and speed with our graph data platform.https://neo4j.com/ &#xff08;二&#xff09;安装并配…

ideaSSM失物招领管理系统网页模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 失物招领管理系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数…

YOLOv8训练好模型后,追加轮数继续训练、或者提前终止训练,缩减训练轮数

一、前言 而且此教程适用的情况是你已经训练好了此模型&#xff0c;想继续追加一些轮数。比如训练进度是120/120&#xff0c;已经完成了&#xff0c;继续追加10轮&#xff0c;或者你原先定的是200轮&#xff0c;希望缩减到150轮&#xff0c;可以使用我说的这个方法。为什么缩减…