7、Maven&Spring Boot初使用

  • maven的使用方法

maven是一个后端的自动化构建工具和包管理工具

npm:是一个前端的包管理工具

    • 第一次创建Maven工程需要做些什么准备工作?

①通过在官网下载maven的Jar包放置在一个不会轻易进行清理删除的文件夹中,并且复制当前jar包所在的路径。

在环境变量中进行系统变量的配置(当前系统变量中路径和上图D盘中的repo文件夹中我都放置了maven的jar包所以也是可以正常使用的 正常情况下 两张图片中的路径应该为一致的)

在Path路径中添加变量

③在进行上述设置的完成后 在idea软件中创建一个maven工程还需要以下两个操作

至此才完成了一个创建maven项目工程的基本操作

    • 对包管理工具的使用:如何在一个Maven工程中引入一个在项目中需要用到的依赖

这是maven工程创建后正常生成的文件结构 正常代码应该写在java包下文件夹中的类里 test包中是用来写测代码的位置 而pom.xml文件就是在maven工程中统一管理项目依赖的地方,也就是导入Jar包的地方;对于Jar包在maven中统一叫作依赖。

在dependencies中添加一组dependency之后 同步Maven

1. 在本地仓库(我们是不是配置过本地仓库的文件夹)中检索对应的jar包是否存在 如果存在 直接引入到当前工程

2. 本地仓库中如果不存在 去中央仓库 / 镜像仓库 按照 gav的文件夹路径找到对应的jar包 下载到本地仓库(也是按照gav路径创建文件夹) 然后再引入到工程中

YIEllAhfBVmy7fvUDrH5Jpe3PuKgKdytGZvbrBgv3Q-16357

25249-0-gqNtZGzNAyWjcnBszQiR 这个网址。导入后记得同步Maven工程

  • maven的生命周期课插件
    • 生命周期定义了Maven在构建一个工程师的不同阶段应该做些什么事情

①clean:用于清理项目目录 确保之前的构建不会影响新的构建过程

②validate: 验证项目是否正确且所有必要信息是否可用

③compile: 编译项目中的源代码

④test: 使用合适的单元测试框架运行测试代码

⑤package: 将编译后的代码打包成可分发的格式 Jar包形式

⑥verify:对集成测试的结果进行检查 ,以确保质量标准符合要求

⑦install:将包安装到本地仓库中

⑧site: 不属于生命周期的一部分 但属于Maven的站点生成生命周期

⑨deploy: 在构建环境完成后 将最终的包复制到远程仓库或直接部署到生产环境(通常不在本地执行)

    • 插件是生命周期的执行者:我们可以自己去开发Maven插件 然后通过在pom.xml文件夹中引入进行使用自定义的插件的功能
      • clean: 清理阶段 清理工程中除了源代码以外的文件
      • test: 测试阶段 运行当前工程中的所有的测试代码
      • package: 打包阶段 根据pom文件中的配置 将工程打成不同格式的包
<packaging>jar</packaging>
<!--此处可以写 jar  war  pom-->
      • install:安装阶段 将当前工程打好的包安装到仓库 默认安装的是本地仓库

Maven 自动化构建好友一个体现就是:生命周期的执行是会从头执行到你要执行的生命周期

  • maven的控制命令 mvn -version
    • mvn clean
    • mvn compile
    • mvn test
    • mvn package
  • maven依赖传递(如何排除依赖传递)

当你引入了一个依赖 存在了其他依赖 那么这些依赖也会随着这次引入添加到当前工程

依赖传递是一个自动发生现象 如果当前引入的依赖不想让他传递其他依赖 使用exclusions标签 根据ga坐标排除指定依赖

<dependencies>
    <dependency>
        <groupId>org.example</groupId>
        <artifactId>note-common</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
  • maven引入依赖时的作用范围

在Maven中,依赖的scpoe属性用于定义依赖的访问范围和生命周期,这对于管理项目中的依赖非常重要,特别是在大型项目中,Maven支持多种scope,每种scope都有其特定的用途和影响。

常见的scope:

    • compile(默认):编译依赖范围,表示该依赖在编译和运行时都需要,如果没有明确指定scpoe,则默认为compile
    • provided: 提供依赖范围,表示在编译和测试时需要这些库,但在运行时容器已经提供,因此不需要打包进应用。例如,ServletAPI在大多数服务器中已经提供。
    • runtime: 运行时依赖范围,表示该依赖只在运行和测试时需要,但不用于编译。
  • maven聚合工程

聚合工程是为以后的分布式微服务铺路的 其结构往往是父工程中有多个子模块

    • 父工程 没有任何的代码 只是子模块的承载体 并且父工程的pom文件 必须打包成pom
      • 子模块A 具体的业务代码 如何开发一个工程就如何开发一个子模块
      • 子模块B
      • 子模块C
    • 他们之间通过一个pom文件有一个强约束关系 用于管理整个工程的自动化构建和依赖

父工程的pom中 生命modules 标签 定义当前父工程中包含的所有子模块的artifactId

<packaging>pom</packaging>

<modules>
    <module>a-module</module>
    <module>b-module</module>
    <module>c-module</module>
</modules>

子模块中通过添加parent标签 指向父工程的gav坐标。

<parent>
    <groupId>org.example</groupId>
    <artifactId>parent-son</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>a-module</artifactId>

当声明好强约束关系后 父子工程间的依赖管理 可以通过继承的方式进行 管理的是依赖的版本

    • dependencyManagement标签的特殊用法(方便快捷)

dependencyManagement声明当前工程及其子模块的依赖版本,也就意味着在一个单体的项目中 使用dependencyManagement同时在使用dependencies一样能起到版本管理的作用,如果以后频繁开发单体应用 但是用到的依赖都想复用一个版本,则需要在dependencyManagement中将所有依赖的版本定义好,在dependencies中不用声明version引入依赖

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.36</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>
    • properties标签作用

自定义标签 我们可以在properties中自定义标签 在当前pom文件中通过${}的方式 引用这些标签的值

  • Spring-boot框架

是一个基于Spring之上的 再次进行封装的框架

    • Spring Boot项目一定是依赖于包管理工具的 一定要把Spring-boot的版本修改成2.2.2.RELEASE
  • boot-starter名称依赖的作用
    • 方便我们引入依赖:当我们要引入一个功能的依赖时 往往需要几个jar包的共同配合 比如说 Spring 框架 如果纯粹就Maven工程来做 我们起码需要引入五个依赖 但是我们使用boot-starter的依赖时 是一个依赖就对应一个完整的功能。
    • 同时boot-starter依赖也会为这个功能额外的传递其他可能使用的依赖
    • bootstarer传递的依赖 都是当前版本之间最兼容的依赖
    • bootstarter中的依赖 可以让Spring Boot的自动配置功能识别到 并进行自动配置 极大的简化了开发
    • 在Spring Boot项目中 能用spring-boot-starter关键字的依赖就用而不再用之前的依赖
  • Spring Boot的特性
    • 自动配置:默认Spring Boot应用会扫描 启动类所在的包及其所有自包
    • 整合MVC时:集成了Tomcat到工程内部 而不是原本的 项目打成war包放到了Tomcat自动配置
    • 中文乱码的自动配置
    • 静态资源访问的自动配置:spring boot默认对外暴露的可访问的静态资源 统一 存放在 resources下的static中 在访问时 直接用/代表static文件夹 相对路径找下去

    • DispatcherServlet的自动配置
    • 对于请求体和响应体的JSON数据自动转换成Java Bean或者将Java Bean 自动转换为JSON
  • Spring Boot整合Spring MVC
    • 回顾Spring如何整合MVC框架
      • Web工程: 在Idea中集成Tomcat 打war包 放到Tomcat中
      • 引入两个依赖: spring-web 和 spring-webmvc
      • 配置dispatchServlet
      • 配置静态资源可访问的类型
      • 中文乱码的解决等等。。。
    • Spring Boot 整合MVC
      • 引入spring-boot-starter-web
  • 接口测试工具ApiPost
  • Result API 接口风格
    • 接口URI定义了一组指导规则 不是协议也不是标准
    • 指导规则规定了:URI上应该只是资源名称的名词 不再出现行为命名 依赖请求方法定义对当前URI中资源的操作行为。
    • 如果需要传递数据 在名词的资源后面 /资源唯一标识的值:
      • 之前:/getUser
      • Restful:/user
        • 获取user 发送GET请求
        • 删除user 发送DELETE请求
        • 添加user 发送POST请求
          • 添加user 往往是一个完整的JSON user数据一般放在POST请求的请求体中
        • 修改user 发送PUT请求
          • 修改user 往往是将一个完整的JSON user数据放在PUT请求的请求体中
    • 如果要使用Restful 风格API 传参 这个参数是出现在URI上的服务端的接口定义要有特殊
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值