JavaEE - Spring Boot 简介

1.Maven

1.1 什么是Maven

翻译过来就是:

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

可以理解为:Maven是一个项目管理工具,通过pom.xml文件的配置来获取jar包,而不用手动去添加jar包。

1.2 为什么学习Maven

特点:简单,方便,提高我们的开发效率,减少我们的开发bug。

并且,Maven提供的功能非常多,主要有:1.项目构建,2.管理依赖。

1.3 创建一个Maven项目

IDEA本⾝已经集成了Maven,我们可以直接使用,无需安装。

不同版本的idea界面展示会有所不同,以下截图idea版本为2024.1

 这样我们就创建好了一个Maven项目。

1.4 Maven核心功能

详细讲解Maven在项目开发中的作用。

1.项目构建

2.管理依赖 

1.4.1 项目构建

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

Maven的命令有以下: 

例如,点击package,就可以完成项目的打包操作。

 

打包就是把所有的class文件全部放在一起,打成jar包或者war包。

jar包和war包都是⼀种压缩⽂件。

jar包就是把开发⼈员已经写好的⼀些代码进⾏打包.打好的jar包就可以引⼊到其他项⽬中,也可以直 接使⽤这些jar包中的类和属性.另外也可以打成可执⾏jar包,这样的包就可以通过java -jar命令来执行。

war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西,通常⽤于⽹站。

1.4.2 依赖管理

Maven是一个项目管理工具,通过pom.xml文件的配置获取jar包,而不用手动去添加jar包。获取的jar包其实就是依赖。

pom.xml就是maven的配置文件,用以描述项目的各种信息。

依赖:指当前项目运行所需要的jar包。

使用JDBC需要手动下载mysql-connector-java的包,并且添加到项目中。

但是,如果使用maven,我们只需要在pom.xml中引入mysql-connector-java的依赖就可以了。

步骤1):在pom.xml文件 <dependencies> 标签内,添加依赖坐标

需要的依赖jar包在中央仓库都可以找到:Maven Repository: Central (mvnrepository.com)

步骤2):点击刷新按钮,引入新加入的依赖jar包

后续有添加新的jar包,或者修改jar包版本,都需要通过该⽅式在项⽬中添加依赖.

 

步骤3):刷新完之后,就可以在项目中看到新加入的jar包

依赖传递

早期我们没有使用maven时,想向项目中添加依赖的jar包,需要把所有的jar包都复制到项目工程下。

比如A依赖B,B依赖C,那么项目A引入B的同时,也需要引入C,如果手动管理这个依赖过程就麻烦。我们需要知道每个库都依赖哪些库,以及这些依赖之间的版本是如何关联的。

但,使用maven的话,就可以避免管理所依赖的关系。只需要在pom文件中,定义直接依赖就可以。由于maven的依赖具有传递性,所以会自动把所依赖的其他jar包也一起导入。

1.4.3 Maven Help 插件

当项⽬⽐较复杂时,我们就会有Jar包冲突的问题,这时候就需要去解决依赖冲突.解决冲突之前,需要先 找到冲突,我们可以使⽤Maven Help插件来观察包和包之间的依赖关系.

插件就是对程序的⼀些特定场景,做出⼀些特定的功能的扩展。 

安装插件:File ->Settings ->Plugins ->搜索'Maven Help' -> 找到对应插件, 点击Install 安装即可,安装后需要重启下idea,才能⽣效。

安装之后,打开pom⽂件,可以看到Jar包之间的依赖关系;也可以右键手动删除一些依赖。

 1.5 Maven仓库

我们通过几行代码就把依赖的jar包放在了项目里,具体是如何实现的?

<dependencies><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.3.0</version></dependency>
</dependencies>

上述代码,我们称之为“坐标”,也就是唯一的。

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

这个Jar包下载的地⽅就称为仓库。 仓库:⽤于存储资源,管理各种jar包。

Maven仓库的本质就是⼀个目录(文件夹),这个目录被用来存储开发中所有依赖(jar包,插件等)。

 

Maven仓库分为两大类:本地仓库和远程仓库.其中远程仓库又分为中央仓库,私服和其他公共库。

 1.5.1 本地仓库

本地仓库:自己计算机上的一个目录(用来存储jar包)。

本地仓库地址可以通过Maven配置查看:

 

查看该仓库⽬录,可以看到该⽬录下有很多的jar(最开始是空的,随着Maven的使⽤,该仓库下⽂件会越来越多)。

当项目中引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包。如果有,则在项目中直接引用;如果没有,则去中央仓库中下载对应的jar包到本地仓库。

1.5.2 中央仓库

中央仓库:Maven软件中内置一个远程仓库地址,就是中央仓库,服务于整个互联网,由maven团队维护,全球唯一。

仓库地址:https://repo1.maven.org/maven2/

可以通过https://mvnrepository.com这个⽹站来查询并下载。

 查找jar的坐标

1)访问 https://mvnrepository.com/

2)进行查找,比如mysql

 

3)选择要添加的jar包版本

 

4)查看jar包对应坐标

 

jar包版本的选择:

1.5.3 私有服务器(私服)

私服:一般由公司团队搭建的私有仓库。

 私服属于某个公司,或者某个部门,往往需要一定权限。有了私服,Maven依赖下载的顺序又发生了变化。

当Maven需要下载资源的时候

1. 先从本地仓库获取,本地仓库存在,则直接返回

2. 如果本地仓库没有,就从私服请求,私服存在该资源,就直接返回

3. 如果私服上不存在该资源,则从中央仓库下载,中央仓库不存在,就报错了... 

4. 如果中央仓库中存在,就先缓存在私服上之后,再缓存到本地仓库⾥,再为Maven的下载请求提供服务

私服是很多⼈在使⽤的,所以只需要第⼀个使⽤者下载⼀次就可以了。

1.6 Maven设置国内源

因为中央仓库在国外,所以下载起来会比较慢,我们可以选择借助国内一些公开的远程仓库来下载资源。

1.6.1 配置当前项目settings

1) file >> settings 查看配置文件的地址

2)配置国内源

打开settings.xml文件,在mirrors节点上,添加内容(没有settings文件可以自己在网上查找并保存):

<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿⾥云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

 1.6.2 设置新项目的setting(idea专业版不需要)

上述配置的内容,只对当前项目生效,为了让后续新建的项目也生效,需要重新设置以下新项目的settings。

当前项⽬和新项⽬共⽤⼀个setttings⽂件即可,所以新项⽬的设置,只需要确认⼀下settings⽂件的路径即可。

 

2.SpringBoot介绍  

2.1 认识Spring

学习SpringBoot之前先认识Spring~

Spring两个含义:

  1. 一个是Spring家族,全家桶;
  2. 另一个指Spring Core,也就是Spring Framework。

上述是Spring官⽅(https://spring.io/)的介绍。

可以看到,Spring让Java程序更加快速,简单和安全.Spring对于速度、简单性和⽣产⼒的关注使其成为 世界上最流⾏的Java框架。

Spring官⽅提供了很多开源的项⽬,覆盖范围从Web开发到⼤数据,Spring发展到了今天,已经形成了⾃ ⼰的⽣态圈.我们在开发时,也倾向于使⽤Spring官⽅提供的技术,来解决对应的问题。

这些项目都是基于Spring Framework来进行开发的。但是Spring Framework存在配置多, ⼊⻔难的问题, Spring 也意识到了这个问题, 为了简化开发者的使⽤,从⽽创造性的推出了SpringBoot。

Spring Boot 的诞生是为了简化 Spring 程序开发的

 Spring Boot就是 Spring 框架的脚⼿架,它是为了快速开发 Spring 框架⽽诞⽣的。

 2.2 Spring Boot 项目搭建

1)File >> New >> Project

(不同版本的idea界面显示可能会有不同)

2)点击Next

 3)点击Create就完成 Spring Boot 的项目创建了。

  注意事项

第⼀次打开Spring Boot 项⽬需要加载很久,因为当前Spring Boot 框架并没有在⾃⼰的本地仓库。为了加速Spring Boot 项⽬的下载,在打开项⽬之前,请先确认⾃⼰的 Maven 已经配置为国内源。

2.3 项目代码和目录介绍

1)项目代码

观察pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>demo</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

pom.xml⽂件⾥的具体信息,不需要过度关注,我们主要看标签⾥⾯的内容:

pom⽂件中,引⼊了两个依赖:

• spring-boot-starter-web:包含了web应⽤开发所需要的常⻅依赖

• spring-boot-starter-test:包含了单元测试所需要的常⻅依赖

父工程

这个依赖没有指定具体的版本号,但我们的jar包也正常引入到项目中,并且查看也有版本号。

 同时,本地仓库的jar包也下载下来了~

为什么没有指定 <version>,程序也可以正常运行呢?

因为每一个SpringBoot工程,都有一个父工程,依赖的版本号,在⽗⼯程中统⼀管理。⽗⼯程指定版本号后,就会⾃动引⼊和所指定版本对应的依赖,创建的SpringBoot项⽬,会继承 SpringBoot⽗⼯程。

 2)目录介绍

Spring Boot项目主要有两个主要的目录:

  • src/main/java:Java源代码
  • src/main/resources:为静态资源或配置文件 -->> 1./static:静态资源文件夹,有js,css,html等静态文件,不需要服务器数据进行绑定的页面;2. /templates:板块资源文件夹,主要存放动态模板文件,比如JSP,Freemarker,Thymeleaf等需要服务器动态渲染数据的文件
  • src/main/test:测试代码源代码
  • target:编译后的文件路径
  • pom.xml:maven配置文件

2.4 启动项目

点击启动类的main方法就可以运行SpringBoot项目。

2.5 输出hello world

⽤ Spring Boot 来实现和浏览器及用户的交互。

在创建的项目包路径下创建UserController的java文件,实现代码如下:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/sayHi")public String say() {return "hello Spring Boot ~";}
}

重新启动项目,访问 http://127.0.0.1:8080/sayHi 最终的效果如下:

以上 ,是对 Spring Boot 的一个简单认识~


😊

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MFC与QT中禁用Esc、Alt+F4、关闭图标

在业务中&#xff0c;我们需要按指定的方式才能关闭当前对话框。如下图需输入密码点击确认后&#xff0c;界面才能关闭。 1.禁用关闭按钮 在对话框初始化部分添加将关闭按钮禁用 //MFC CMenu *pSysMenu GetSystemMenu(FALSE); ASSERT(pSysMenu ! NULL); pSysMenu->EnableM…

【BUG】已解决:NameError: name ‘python‘ is not defined

NameError: name ‘python‘ is not defined 目录 NameError: name ‘python‘ is not defined 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于…

学习记录——day18 数据结构 树

树的存储 1、顺序存储 对于普通的二叉树&#xff0c;不适合存储普通的二叉树顶序存储&#xff0c;一般用于存储完全二叉树而言&#xff0c;如果使用顺序存储&#xff0c;会浪费大量的存储空间&#xff0c;因为需要给没有节点的位置留出空间&#xff0c;以便于后期的插入。 所以…

图书管理系统设计

设计一个图书管理系统时&#xff0c;我们需要考虑系统的基本功能、用户需求、技术选型以及数据的安全性和完整性。下面是一个基本的图书管理系统的设计概览&#xff1a; 1. 系统目标 管理图书信息&#xff1a;添加、删除、修改图书信息。借阅管理&#xff1a;处理借书、还书流…

Leetcode—297. 二叉树的序列化与反序列化【困难】

2024每日刷题&#xff08;148&#xff09; Leetcode—297. 二叉树的序列化与反序列化 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(…

Oracle对比两表数据的不一致

MINUS 基本语法如下 [SQL 语句 1] MINUS [SQL 语句 2];举个例子&#xff1a; select 1 from dual minus select 2 from dual--运行结果 1-------------------------------- select 2 from dual minus select 1 from dual--运行结果 2所以&#xff0c;如果想找所有不一致的&a…

汽车免拆诊断案例 | 2018 款别克阅朗车蓄电池偶尔亏电

故障现象 一辆2018款别克阅朗车&#xff0c;搭载LI6发动机和GF6变速器&#xff0c;累计行驶里程约为9.6万km。车主反映&#xff0c;该车停放一晚后&#xff0c;蓄电池偶尔亏电。 故障诊断 接车后用虹科Pico汽车示波器和高精度电流钳&#xff08;30 A&#xff09;测量该车的寄…

4、Python+MySQL+Flask的文件管理系统【附源码,运行简单】

4、PythonMySQLFlask的文件管理系统【附源码&#xff0c;运行简单】 总览 1、《文件管理系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 登录2.2 注册2.3 个人中心界面2.4 文件上传界面2.5 其他功能贴图 3、下载 总览 自己做的项目&#xff0c;禁止转载&#xff0c…

C++【泛型编程】【string类常用接口】学习

目录 泛型编程 推演实例化 显示实例化 类模板 类模板的声明和定义分离 STL string string的构造和拷贝构造 选取特定字符串拷贝 解析&#xff1a; 关于npos的解析 验证 从一个字符串中拷贝前几个字符 解析&#xff1a; 注意&#xff1a; 验证&#xff1a; size…

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…

C++客户端Qt开发——Qt窗口(菜单栏)

Qt窗口是通过QMainWindow类来实现的。 QMainWindow是一个为用户提供主窗口程序的类&#xff0c;继承自QWidget类&#xff0c;并且提供了一个预定义的布局。QMainWindow包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口&#xff08;铆接部件)(dock widgets、一个…

算法从零到精通 (一) ~ 快慢双指针

1. 前言 快慢双指针是一种常用的算法技巧&#xff0c;通常用于解决涉及链表或数组的问题。它的基本思想是使用两个指针&#xff0c;一个移动速度快&#xff08;快指针&#xff09;&#xff0c;一个移动速度慢&#xff08;慢指针&#xff09;&#xff0c;来解决特定的问题。这两…

Vue中el的两种写法

大家好我是前端寄术区博主PleaSure乐事。今天了解到了Vue当中有关el的两种写法&#xff0c;记录下来与大家分享&#xff0c;希望对大家有所帮助。 方法一 解释 第一种方法我们直接用new创建并初始化一个新的 Vue 实例&#xff0c;并定义了 Vue 实例的数据对象&#xff0c;在给…

低代码如何加速数字化转型

数字化转型&#xff0c;正日益决定企业成功的关键。这里的一个关键因素是它可以以更快的速度和质量来实施技术计划。在当今瞬息万变的商业环境中&#xff0c;战略性地采用低代码平台对于旨在加快上市时间、增强业务敏捷性和促进跨团队无缝协作的首席技术官来说至关重要。日益增…

动手学深度学习——6.循环神经网络

1.序列模型 处理序列数据需要统计工具和新的深度神经网络架构。 为了简单起见&#xff0c;我们以 图8.1.1所示的股票价格&#xff08;富时100指数&#xff09;为例。 图8.1.1 近30年的富时100指数 其中&#xff0c;用&#x1d465;&#x1d461;表示价格&#xff0c;即在时间…

江科大/江协科技 STM32学习笔记P6

文章目录 LED闪烁&LE流水&蜂鸣器一、操作STM32的GPIO步骤二、RCC库函数什么是AHB与APB&#xff1f; 三、GPIO库函数GPIO初始化选择IO接口工作方式 四、四种方法实现LED闪灯 LED闪烁&LE流水&蜂鸣器 一、操作STM32的GPIO步骤 1、使用RCC开启GPIO的时钟 2、使用…

UE/Unity加载倾斜摄影太卡问题-使用局部网格简化重构导出为FBX/OBJ

工具 OSGB源数据灵易智模倾斜摄影编辑平台(下称OPEditor) 与另一篇文章里描述的导出时指定LOD层级的网格简化效果的区别 本功能属于导出时指定LOD层级的网格简化方法的升级版&#xff0c;可以基于某一LOD层级的局部数据进行进一步拓扑重构与纹理重烘焙自定义程度较高&#xff…

西蒙学习法

西蒙学习法 《世界十大学习方法》之西蒙学习法

Python 基于 Django 的内容管理系统库之feincms使用详解

概要 在现代 Web 开发中,内容管理系统(CMS)已经成为管理和发布内容的重要工具。FeinCMS 是一个基于 Django 的简单且灵活的内容管理系统,它专注于提供一种轻量级但功能强大的 CMS 解决方案。对于开发者来说,FeinCMS 提供了一种易于扩展和定制的方式,可以满足不同项目的需…

MongoDB教程(二十一):MongoDB大文件存储GridFS

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、GridFS…