POM.xml文件说明
maven坐标
坐标:
- 第一行为组ID,一般为公司域名倒写
- 第二行为项目名称,不可重复,不可以数字开头
- 第三行为项目版本
坐标作用:
- 在本地仓库中定位项目,进行项目的区分管理
- 可以作为依赖项被其他项目引用
<!-- 组ID,一般为公司域名倒写 -->
<groupId>com.jt</groupId>
<!-- 项目名称 -->
<artifactId>springboot_demo1</artifactId>
<!-- 项目版本 -->
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo1</name>
<description>Demo project for Spring Boot</description>
parent标签
parent作用:将父级内容进行引用(简化了操作)
SpringBoot:相当于框架中的框架
jar版本冲突问题严重,需要统一管理,SpringBoot将大部分框架在SpringBoot内部进行了整合,并制定了统一的版本依赖信息。
所以parent标签作用为:定义当前的SpringBoot所有依赖的版本号。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
dependency标签
<dependency>
<groupId>org.springframework.boot</groupId>
<!-- spring的启动器 -->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency></dependency>
中为需要安装的依赖,使用原则:按需导入
SpringBoot前身为SSM,需要编写大量配置文件,SpringBoot对SSM进行了整合,使用了“开箱即用”的思想。
spring-boot-starter-web
为spring的启动器,在内部已经完成了项目的整合(配置),开发人员可以拿来就用,这就是“开箱即用”的思想。
plugins标签
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
plugins标签内为插件,这个插件为SpringBoot与Maven项目的整合的插件,可以通过插件 执行项目打包/测试/文档生成等操作。
SpringBoot项目,在打包部署发布时需要依赖Maven的工具API,若没有该插件,将直接影响项目发布。
exclusions标签
exclusions标签可以忽略不需要的依赖。
使用dependency标签引入依赖有时会导入许多依赖,其中有一些不需要的依赖可以使用exclusions标签可以忽略不需要的依赖。
示例:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<!--排除不需要的资源-->
<exclusion>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
</exclusion>
</exclusions>
</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
示例:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<scope>import</scope>
<type>pom</type> <!--只有类型为pom的才可以import-->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Maven命令
- clean: 删除编译后的class文件,即target目录的文件。 .java文件为源码,.jar包为编译后的class文件
用途:
1. 当出现编译问题时,使用clean
2.项目打包前
- install:项目发布,将xxx.class文件进行打包,打包为.jar,会将测试类一起进行打包。
打包位置:target目录下,本地仓库里面
SpringBoot配置文件
yml文件语法
数据结构: key-value结构
写法:key:(空格) value
默认字符集为UTF-8编码,不会出现中文乱码现象,写法需要层级递进。如下:
server:
port: 8090
servlet:
context-path: /test
@Value注解
当Spring容器启动时会加载yml文件中的配置文件,会将内部的key-value结构加载到Spring维护的内存空间中
@Value
注解可以获取SpringBoot配置文件的信息,即可以读取.yml文件的信息或.properties文件的信息。进行给属性赋值操作。
用法**@Value("${ **需要获取的配置文件的信息 **}")**
,**@Value("${ }")**
示例:
@Value("${server.port}")
private Integer port;
@Value("${server.servlet.context-path}")
private String context_path;
properties文件
用处:
业务有时需要动态赋值,若将大量的业务数据写入yml文件中会导致代码混乱,因此应该指定properties文件来存放业务数据。
语法与yml文件相同,也为key-value结构,不需要添加 **""**
本身就是字符串。写入时采用UTF-8编码,中文不会乱码,程序读取时采用ISO-8859-1编码。