JavaEE - Spring Boot 简介

news2024/11/16 2:49:48

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.coloradmin.cn/o/1946745.html

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

相关文章

nginx隐藏server及版本号

1、背景 为了提高nginx服务器的安全性&#xff0c;降低被攻击的风险&#xff0c;需要隐藏nginx的server和版本号。 2、隐藏nginx版本号 在 http {—}里加上 server_tokens off; 如&#xff1a; http {……省略sendfile on;tcp_nopush on;keepalive_timeout 60;tcp_nodelay o…

ROS参数服务器增删改查实操Python

ROS参数服务器增删改查实操Python 环境准备参数服务器新增&#xff08;修改&#xff09;参数参数服务器获取参数参数服务器删除参数 ROS通信机制包括话题通信、服务通信和参数服务器三种通信方式&#xff0c;各原理及代码实现如下表 功能博客链接说明VScode配置 ROS 环境VScode…

《后端程序猿 · @Value 注释说明》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

基于 HTML+ECharts 实现监控平台数据可视化大屏(含源码)

构建监控平台数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 监控平台的数据可视化对于实时掌握系统状态、快速响应问题至关重要。通过直观的数据展示&#xff0c;运维团队可以迅速发现异常&#xff0c;优化资源配置。本文将详细介绍如何利用 HTML 和 ECharts 实现一个…

Unity3D之TCP网络通信(客户端)

文章目录 概述TCP核心类异步机制 Unity中创建TCP客户端Unity中其它脚本获取TCP客户端接受到的数据后续改进 本文将以Unity3D应用项目作为客户端去连接制定的服务器为例进行相关说明。 Unity官网参考资料&#xff1a; https://developer.unity.cn/projects/6572ea1bedbc2a001ef…

go语言day17 通道channel

Golang-100-Days/Day16-20(Go语言基础进阶)/day18_channel通道.md at master rubyhan1314/Golang-100-Days (github.com) go语言day09 通道 协程的死锁-CSDN博客 channel for range 循环通道对象 单向通道 单项通道常用于函数参数&#xff0c;只是用来限定在函数中只能进行通道…

【Android】广播机制

【Android】广播机制 前言 广播机制是Android中一种非常重要的通信机制&#xff0c;用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播&#xff0c;也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中&#xff0c…

【学一点儿前端】getaddrinfo ENOTFOUND registry.nlark.com“.

问题 今天jenkins打包一个项目&#xff0c;发现报错了 error An unexpected error occurred: "https://registry.nlark.com/xxxxxxxxxx.tgz: getaddrinfo ENOTFOUND registry.nlark.com". 先写解决方案 把yarn.lock文件里面的registry.nlark.com替换为registry.npmmi…

超低功耗ARM Cortex-M33 TZ MCU STM32WBA54、STM32WBA55:通过提升无线性能实现更出色的用户体验

摘要 STM32WBA54、STM32WBA55产品系列同时支持多种无线标准&#xff0c;包括Bluetooth低功耗 5.4&#xff08;已认证&#xff09;、Zigbee、Thread以及可用作Thread边界路由器的Matter。 该产品系列具有出色的灵活性和更强的安全性&#xff0c;可帮助开发人员应对不断变化的无…

二、QGroundControl开发环境搭建

文章目录 环境列表QGC源码下载编译 环境列表 QGC GithubPX4-AutopilotQt 5.15Ubuntu20.04 QGC源码下载编译 官网下载指令 如下 // Clone the repo (or your fork) including submodules: git clone --recursive -j8 https://github.com/mavlink/qgroundcontrol.git // Upda…

【vluhub】elasticsearch漏洞

Elasticsearch介绍 是Apache旗下的一个开源的、分布式、RESTful的搜索和分析引擎&#xff0c;适用于java语言项目 默认端口9200 kali中搭建ElasticHD, 即可未授权绕过ES可视化界面 直通车 https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elas…

防火墙——网络环境支持

目录 网络环境支持 防火墙的组网 web连接上防火墙 web管理口 让防火墙接到网络环境中 ​编辑 管理员用户管理 缺省管理员 接口 配置一个普通接口 创建安全区域 路由模式 透明模式 混合模式 防火墙的安全策略 防火墙转发流程 与传统包过滤的区别 创建安全策略 …

新手小白的pytorch学习第十一弹-----Computer Vision创建基础模型使用FashionMNIST

目录 PyTorch Computer Vision0 PyTorch 中 Computer vision 的库1 获得一个数据集1.1 查看数据的输入和输出形状1.2 可视化数据 2 准备 DataLoader3 Model 0: 创建一个 baseline model3.1 设置损失函数、优化器和评估指标3.2 创建一个函数来给我们的实验计时3.3 在批量数据集上…

09-软件易用性

易用性是用户体验的一个重要方面&#xff0c;网站建设者一般会沉溺于自己的思维习惯&#xff0c;而造成用户使用的不畅。易用性不仅是专业UI/UE人员需要研究&#xff0c;对于网站建设其他岗位的人也应该了解一定的方法去检验和提升网站的易用性。通常对易用性有如下定义: 易理解…

书生浦语多模态简述——学习笔记

多模态学习概念 多模态它是研究异构且相互连接数据的科学。它涵盖了从原始的器官信号到抽象概念的多种模态。 比如说我们语音和语言是我们理解人类交流的关键模态&#xff0c;而情感和图像就为我们提供了对环境和对象的感知&#xff0c;通过分析这些模态&#xff0c;我们就可…

视频生成【文章汇总】SVD, Sora, Latte, VideoCrafter12, DiT...

视频生成【文章汇总】SVD, Sora, Latte, VideoCrafter12, DiT... 数据集指标 【arXiv 2024】MiraData: A Large-Scale Video Dataset with Long Durations and Structured Captions【CVPR 2024】VBench : Comprehensive Benchmark Suite for Video Generative Models【arxiv 20…

SpringBoot自动配置(面试重点)

自动配置是指&#xff1a; 自动配置是指在应用程序启动时&#xff0c;SpringBoot根据classpath路径下的jar包自动配置应用程序所需的一系列bean和组件&#xff0c;从而减少开发者的配置工作&#xff0c;提高开发效率。 一&#xff1a;Condition Condition是spring4.0之后添加…

HTML5 + CSS3

HTML 基础 准备开发环境 1.vscode 使用 新建文件夹 ---> 左键拖入 vscode 中 2.安装插件 扩展 → 搜索插件 → 安装打开网页插件&#xff1a;open in browser汉化菜单插件&#xff1a;Chinese 3.缩放代码字号 放大,缩小&#xff1a;Ctrl 加号&#xff0c;减号 4.设…

【BUG】已解决:You are using pip version 10.0.1, however version 21.3.1 is available.

You are using pip version 10.0.1, however version 21.3.1 is available. 目录 You are using pip version 10.0.1, however version 21.3.1 is available. 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#…

硅纪元视角 | 语音克隆突破:微软VALL-E 2,Deepfake新纪元!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…