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 的一个简单认识~


😊

相关推荐
Kali_073 分钟前
使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】
java·人工智能·免费
rzl0215 分钟前
java web5(黑马)
java·开发语言·前端
君爱学习20 分钟前
RocketMQ延迟消息是如何实现的?
后端
guojl34 分钟前
深度解读jdk8 HashMap设计与源码
java
Falling4238 分钟前
使用 CNB 构建并部署maven项目
后端
guojl40 分钟前
深度解读jdk8 ConcurrentHashMap设计与源码
java
程序员小假1 小时前
我们来讲一讲 ConcurrentHashMap
后端
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
A~taoker1 小时前
taoker的项目维护(ng服务器)
java·开发语言