JavaEE进阶----SpringBoot快速入门


前言

Spring Boot是一个用于构建快速、简单和可扩展的生产级应用程序的框架。它基于Spring框架,提供了开发微服务和独立的应用程序所需的一切。


一、了解Maven

Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。

1.1 Maven功能

Maven提供的功能⾮常多, Maven在咱们课程中的体现主要是以下两个⽅⾯:

- 项⽬构建

Maven 提供了标准的,跨平台(Linux, Windows, MacOS等)的⾃动化项⽬构建⽅式,当我们开发了⼀个项⽬之后, 代码需要经过编译, 测试, 打包, 发布等流程, 每次代码的修改, 都需要经过这些流程, 如果代码反复调试修改, 这个流程就需要反复进⾏, 就显得特别麻烦,而Maven 给我们提供了⼀套简单的命令来完成项⽬的构建。

- 管理依赖

Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包获取的jar包, 其实就是依赖。

依赖配置
如果使⽤Maven, 我们只需要在pom.xml中引⼊mysql-connector-java的依赖就可以了。

<dependencies><!--⾥⾯放置项⽬的依赖坐标, 可为多个 -->
</dependencies>

依赖传递
早期我们没有使⽤maven时, 向项⽬中添加依赖的jar包,需要把所有的jar包都复制到项⽬⼯程下.⽐如 A 依赖B, B依赖C, 那么 A项⽬引⼊B 的同时, 也需要引⼊C, 如果我们⼿动管理这个依赖, 这个过程就会⽐较⿇烦, 我们需要知道每个库都依赖哪些库, 以及这些依赖之间的版本是如何关联的,但使⽤maven的话, 就可以避免管理所需依赖的关系。我们只需要在pom⽂件中, 定义直接依赖就可以了, 由于maven的依赖具有传递性,所以会⾃动把所依赖的其他jar包也⼀起导⼊。
项⽬A 通过Maven 引⼊ Jar A 时, 会⾃动引⼊ Jar B 和Jar C.
Jar A 和项⽬B就是项⽬A的直接依赖.
Jar B, Jar C是间接依赖.

直接依赖:在当前项⽬中通过依赖配置建⽴的依赖关系
间接依赖:被依赖的资源如果依赖其他资源,当前项⽬间接依赖其他资源

依赖排除:指主动断开依赖的资源。(被排除的资源⽆需指定版本)
当前阶段我们需要依赖的库并不多, 但随着项⽬的越来越复杂, 库之间的依赖关系也会变得越来越复杂.
如上, 如果项⽬A不需要Jar B,也可以通过排除依赖的⽅式来实现.
eg.

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version><!--排除依赖--><exclusions><exclusion><artifactId>spring-jcl</artifactId><groupId>org.springframework</groupId></exclusion></exclusions>
</dependency>

1.2Maven仓库

仓库:⽤于存储资源,管理各种jar包
Maven仓库的本质就是⼀个⽬录(⽂件夹),这个⽬录被⽤来存储开发中所有依赖(jar包, 插件等).

我们通过短短⼏⾏代码, 就把依赖jar包放在了项⽬⾥, 具体是如何做的呢?

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version>
</dependency>

这个代码, 我们称之为 “坐标”, 也就是唯⼀的.
在Maven中, 根据 groupId、artifactId、version 的配置, 来唯⼀识别⼀个 jar 包, 缺⼀不可,当我们在pom⽂件中配置完依赖之后, 点击刷新, Maven会根据坐标的配置, 去仓库⾥寻找Jar包, 并把他下载下来, 添加到项⽬中. 这个Jar包下载的地⽅就称为仓库。

二、第一个SpringBoot项目

Spring Boot 项⽬有两个主要的⽬录:
• src/main/java: Java 源代码 。
•src/main/resources: 为静态资源或配置⽂件:
◦ /static:静态资源⽂件夹, ⽐如前期学的js, css,html等静态⽂件, 不需要服务器数据进⾏绑定的页面。
◦ /templates:模版资源⽂件夹, 主要存放动态模板⽂件,比如JSP,Freemarker, Thymeleaf等需 要服务器动态渲染数据的⽂件 。
• src/test/java: 测试代码源代码。

@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/sayHi")public String sayHi(){return "hello,Spring";}
}

我们电脑中可能有多个项目,如果8080端口被占用了,程序会报错,我们可以尝试在application.properties中更改端口号。
在这里插入图片描述

在这里插入图片描述
此时9090端口号可以使用
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


总结

程序运行出现bug是常有的事,我们要学会看日志,一般读日志从下往上读,一段一段看,先看最后一段的首行,一般的错误原因是程序未启动,url路径不正确,未添加注解等,尝试自己解决问题。

最后,码字不易,如果觉得对你有帮助的话请点个赞吧,关注我,一起学习,一起进步!

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

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

相关文章

学生党打工人救星,GPT一句话生成精美PPT

学生党打工人救星&#xff0c;GPT一句话生成精美PPT 介绍 在这个快节奏的现代社会&#xff0c;效率是关键。无论是工作会议、学术报告&#xff0c;还是产品展示&#xff0c;一个精美而结构合理的 PPT 都是成功的关键。然而&#xff0c;制作一个高质量的 PPT 往往需要耗费大量…

气体传感器的工作原理探究

气体传感器的工作原理主要基于其内部的感应元件与目标气体之间的相互作用。不同的气体传感器可能采用不同的工作原理&#xff0c;但其核心目的都是将气体的浓度或成分转化为可测量和处理的电信号。 PID气体传感器 以常见的电化学式气体传感器为例&#xff0c;其工作原理涉及气体…

Euro Efficiency(POJ, Open judge)

题目链接: 1252 -- Euro Efficiency 题目描述: 思路: 题面的大概意思就是给你一组基本面值的钱币&#xff0c;问你要凑出指定的面值最少需要多少个钱币的参与&#xff0c;钱币的参与可以是加法也可以是减法。 分析一下&#xff0c;由于答案与钱币参与的顺序无关&#xff0c;…

【C++入门(3)】函数重载、引用

一、函数重载 1、函数重载概念 函数重载是指在同一作用域中&#xff0c;具有不同形参列表&#xff08;参数的 个数 或 类型 或类型顺序 不同&#xff09;的同名函数。 C语言中不允许同名函数的存在&#xff0c;如果一个程序中有两个函数的函数名完全相同&#xff0c;就会报错…

轻松4步!格式工厂怎么转换mp3教会你

在数字化时代&#xff0c;音频文件格式转换变得越发重要&#xff0c;而格式工厂作为一款强大而多功能的工具&#xff0c;为我们提供了便捷的音频转换解决方案。特别是在将音频文件转换为MP3的需求上&#xff0c;格式工厂以其简便易用的特点备受欢迎。格式工厂怎么转换mp3&#…

坚持刷题|合并有序链表

文章目录 题目思考代码实现迭代递归 扩展实现k个有序链表合并方法一方法二 PriorityQueue基本操作Java示例注意事项 Hello&#xff0c;大家好&#xff0c;我是阿月。坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;消失了一段时间&#xff0c;我又回来刷题啦&#xff0c;今天…

CMake从安装到精通

目录 引言 1. CMake的安装 2. CMake的原理 3. CMake入门 3.1 CMakeLists.txt与注释 3.2 版本指定与工程描述 3.3 生成可执行程序 3.4 定义变量与指定输出路径 3.5 指定C标准 3.6 搜索文件 3.7 包含头文件 4. CMake进阶 4.1 生成动静态库 4.2 链接动静态库 4.…

垃圾回收管理系统设计

一、引言 随着城市化进程的加快&#xff0c;垃圾处理问题日益凸显。为了有效管理垃圾回收&#xff0c;提高资源利用效率&#xff0c;降低环境污染&#xff0c;本文设计了一套垃圾回收管理系统。该系统涵盖了数据收集与分析、智能监测与识别、资源调配与协调、用户参与与反馈、…

Golang | Leetcode Golang题解之第149题直线上最多的点数

题目&#xff1a; 题解&#xff1a; func maxPoints(points [][]int) (ans int) {n : len(points)if n < 2 {return n}for i, p : range points {if ans > n-i || ans > n/2 {break}cnt : map[int]int{}for _, q : range points[i1:] {x, y : p[0]-q[0], p[1]-q[1]if…

探索AI绘画工具的前沿:创新科技与艺术的无缝融合

在科技和艺术交织的时代&#xff0c;AI绘画工具以其独特的魅力引领着创作的新潮流。本文将带您深入了解AI绘画工具的前沿技术&#xff0c;并通过最新例子展示其实际应用和潜力。 AI绘画工具概述 AI绘画工具通过集成深度学习、自然语言处理等技术&#xff0c;实现了从文字描述…

关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决

我们从绿洲物联平台跳转智能锁应用&#xff0c; 如下&#xff0c;我们可以看到&#xff0c;我们是通过a标签去跳转应用的。但是我们打开控制台的话&#xff0c;因为a标签是另外新开一个页面&#xff0c;我们看不到新页面的html文档的加载情况。 我们可以临时把_blank改成_sel…

Perl 语言入门学习

一、介绍 Perl 是一种高级的、动态的、解释型的通用编程语言&#xff0c;由Larry Wall于1987年开发。它是一种非常灵活和强大的语言&#xff0c;广泛用于文本处理、系统管理、网络编程、图形编程等领域。 Perl 语言的设计理念是“用一种简单的语法&#xff0c;去解决复杂的编…

Elixir学习笔记——Erlang 库

Elixir 提供了与 Erlang 库的出色互操作性。事实上&#xff0c;Elixir 不鼓励简单地包装 Erlang 库&#xff0c;而是直接与 Erlang 代码交互。在本节中&#xff0c;我们将介绍一些 Elixir 中没有的最常见和最有用的 Erlang 功能。 Erlang 模块的命名约定与 Elixir 不同&#x…

【C++高阶】掌握C++多态:探索代码的动态之美

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C继承 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀继承 &#x1f4d2;1. 多态的定义及实现&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发&#xff08;Java 是基础&#xff0c;有些源码是 Java 写…

六西格玛助力便携式产品功耗大降:打造绿色节能新标杆!

随着功能的日益强大&#xff0c;便携式电子产品的功耗问题也日益凸显&#xff0c;成为制约产品性能提升和用户体验改善的关键因素。为了应对这一挑战&#xff0c;越来越多的企业开始探索应用六西格玛方法来降低便携式产品的功耗&#xff0c;实现绿色节能的目标。 六西格玛是一…

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…

12. Django 第三方功能应用

12. 第三方功能应用 因为Django具有很强的可扩展性, 所以延伸了第三方功能应用. 通过本章的学习, 读者能够在网站开发过程中快速实现API接口开发, 验证码生成与使用, 站内搜索引擎, 第三方网站实现用户注册, 异步任务和定时任务, 即时通信等功能.12.1 Django Rest Framework框…

基于C++、MFC和Windows套接字实现的简单聊天室程序开发

一、一个简单的聊天室程序 该程序由服务器端和客户端两个项目组成&#xff0c;这两个项目均基于对话框的程序。服务器端项目负责管理客户端的上线、离线状态&#xff0c;以及转发客户端发送的信息。客户端项目则负责向服务器发送信息&#xff0c;并接收来自服务器的信息&#…

表 达式树

》》》可以借助 LINQPad工具 using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using System.Transactions;namespace EFDemo {public class…