POM.xml文件说明

maven坐标

坐标:

  1. 第一行为组ID,一般为公司域名倒写
  2. 第二行为项目名称,不可重复,不可以数字开头
  3. 第三行为项目版本

坐标作用:

  1. 在本地仓库中定位项目,进行项目的区分管理
  2. 可以作为依赖项被其他项目引用
  1. <!-- 组ID,一般为公司域名倒写 -->
  2. <groupId>com.jt</groupId>
  3. <!-- 项目名称 -->
  4. <artifactId>springboot_demo1</artifactId>
  5. <!-- 项目版本 -->
  6. <version>0.0.1-SNAPSHOT</version>
  7. <name>springboot_demo1</name>
  8. <description>Demo project for Spring Boot</description>

parent标签

parent作用:将父级内容进行引用(简化了操作)
SpringBoot:相当于框架中的框架

jar版本冲突问题严重,需要统一管理,SpringBoot将大部分框架在SpringBoot内部进行了整合,并制定了统一的版本依赖信息。

所以parent标签作用为:定义当前的SpringBoot所有依赖的版本号。

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.5.3</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

dependency标签

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <!-- spring的启动器 -->
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>

<dependency></dependency>中为需要安装的依赖,使用原则:按需导入

SpringBoot前身为SSM,需要编写大量配置文件,SpringBoot对SSM进行了整合,使用了“开箱即用”的思想。

spring-boot-starter-web为spring的启动器,在内部已经完成了项目的整合(配置),开发人员可以拿来就用,这就是“开箱即用”的思想。

plugins标签

  1. <plugins>
  2. <plugin>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-maven-plugin</artifactId>
  5. </plugin>
  6. </plugins>

plugins标签内为插件,这个插件为SpringBoot与Maven项目的整合的插件,可以通过插件 执行项目打包/测试/文档生成等操作。

SpringBoot项目,在打包部署发布时需要依赖Maven的工具API,若没有该插件,将直接影响项目发布。

exclusions标签

exclusions标签可以忽略不需要的依赖。

使用dependency标签引入依赖有时会导入许多依赖,其中有一些不需要的依赖可以使用exclusions标签可以忽略不需要的依赖。

示例:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-test</artifactId>
  4. <scope>test</scope>
  5. <exclusions>
  6. <!--排除不需要的资源-->
  7. <exclusion>
  8. <groupId>org.junit.jupiter</groupId>
  9. <artifactId>junit-jupiter-engine</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>

Scope标签

在一个maven项目中,如果存在编译需要而发布不需要的jar包,可以用scope标签。

参数如下:

  • compile

默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。适用于所有阶段,会随着项目一起发布

  • provided

跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。

  • runtime

表示dependency不作用在编译时,但会作用在运行和测试时,如JDBC驱动,适用运行和测试阶段。

  • test

表示dependency作用在测试时,不作用在运行时。 只在测试时使用,用于编译和运行测试代码。不会随项目发布。

  • system

跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。

  • import

中的依赖maven会自动给我们下载,中的依赖maven不会自动给我们下载,而import就是把一个maven项目(这个项目也是pom类型的项目)中的在标签的中的依赖导入到当前的pom文件中使用,且只有类型为pom的才可以import。
示例:

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-dependencies</artifactId>
  4. <version>${spring.boot.version}</version>
  5. <scope>import</scope>
  6. <type>pom</type> <!--只有类型为pom的才可以import-->
  7. </dependency>
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-test</artifactId>
  11. <scope>test</scope>
  12. </dependency>

Maven命令

  1. clean: 删除编译后的class文件,即target目录的文件。 .java文件为源码,.jar包为编译后的class文件

用途:
1. 当出现编译问题时,使用clean
2.项目打包前

  1. install:项目发布,将xxx.class文件进行打包,打包为.jar,会将测试类一起进行打包。

打包位置:target目录下,本地仓库里面

SpringBoot配置文件

yml文件语法

数据结构: key-value结构

写法:key:(空格) value

默认字符集为UTF-8编码,不会出现中文乱码现象,写法需要层级递进。如下:

  1. server:
  2. port: 8090
  3. servlet:
  4. context-path: /test

@Value注解

当Spring容器启动时会加载yml文件中的配置文件,会将内部的key-value结构加载到Spring维护的内存空间中

@Value注解可以获取SpringBoot配置文件的信息,即可以读取.yml文件的信息或.properties文件的信息。进行给属性赋值操作。

用法**@Value("${ **需要获取的配置文件的信息 **}")****@Value("${ }")**

示例:

  1. @Value("${server.port}")
  2. private Integer port;
  3. @Value("${server.servlet.context-path}")
  4. private String context_path;

properties文件

用处:
业务有时需要动态赋值,若将大量的业务数据写入yml文件中会导致代码混乱,因此应该指定properties文件来存放业务数据。

语法与yml文件相同,也为key-value结构,不需要添加 **""** 本身就是字符串。写入时采用UTF-8编码,中文不会乱码,程序读取时采用ISO-8859-1编码。