参考下面文章的学习笔记:
spring boot中pom文件解读
搭建SpringBoot项目阶段groupId和artifactId怎么写呢?
springboot中pom文件详解
POM标签大全详解
springboot入门–pom文件解读
SpringBoot 常用依赖
spring-boot-starter家族成员简介
Spring Boot Starter 简介
Pom文件的基本构成
几乎最简单的一个SpringBoot 项目的 Pom文件,通过她来了解一下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> <!--model的版本--> <!--model作用: 待更新-->
<!--当前项目的父依赖-->
<!--spring-boot-starter-parent 继承 spring-boot-dependencies-->
<!--spring-boot-dependencies 包含了大量配置好的依赖管理,在自己的项目里添加这些依赖时不需要再写<version>版本号-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--groupid 和 artifactId 统称为 “坐标” 为了保证项目唯一性; groupid + artifactId -> 唯一指定某个项目 -->
<groupId>com.example</groupId><!--groupId 一般为 域名 + 公司名 -->
<artifactId>nodep</artifactId><!--artifactId 一般是 项目名 或 模块名-->
<!--举个apache公司的tomcat项目例子: org.apache.tomcat; 域有 org、com、cn等,其中org为非营利组织,com为商业组织;-->
<version>0.0.1-SNAPSHOT</version><!--项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
<packaging>jar</packaging><!--项目产生的构件类型,例如jar、war、ear、pom 等-->
<name>nodep</name> <!--项目的名称, Maven产生的文档用 -->
<url>http://www.qwqwq.com/banseon</url><!--项目主页的URL, Maven产生的文档用 -->
<description>nodep</description><!--项目的详细描述, Maven产生的文档用。-->
<properties>
<java.version>1.8</java.version><!--属性配置:jdk版本-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!--编译字符编码为utf-8-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!--输出字符编码为UTF-8-->
</properties>
<!--项目相关的所有依赖-->
<dependencies>
<!--单元测试启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!--构建项目需要的信息-->
<build>
<!--使用的插件列表-->
<plugins>
<!--maven插件,可以用maven的功能-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
artifactId 和 name 区别?
groupId + artifactId 唯一确定当前项目;
name 只是项目的名称;
大多数情况下,artifactId 和 name 设置成一样的了,所以容易引起混淆;
仅仅代表个人理解。
SpringBoot常用依赖
springboot 在配置上相比spring要简单许多, 其核心在于各种springboot starter; 由于springboot 的自动装配,在使用springboot搭建一个项目时, 只需要引入官方提供的starter, 就可以直接使用里面的功能, 免去了各种配置。
有关 Spring Boot Starter 命名规范:
所有官方发布的 Starter 都遵循以下命名模式:spring-boot-starter-*
,其中 *
指特定的应用程序代号或名称,譬如 spring-boot-starter-jdbc
任何第三方提供的 Starter 都不能以 spring-boot 作为前缀,应该将应用程序代号或名称作为前缀 *-spring-boot-starter
,譬如 mybatis-spring-boot-starter
;
spring-boot-starter
Spring Boot 核心 starter,包括自动配置支持,日志和YAML
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
spring-boot-starter-web
对全栈web开发的支持,包括Tomcat和spring-webmvc
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
数据访问层
Mybatis+Mapper
<mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-spring-boot-starter.version}</version>
</dependency>
<mapper-spring-boot-starter.version>1.1.7</mapper-spring-boot-starter.version>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${mapper-spring-boot-starter.version}</version>
</dependency>
关系型数据库
spring-boot-starter-jdbc
对JDBC数据库的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
mysql
MySQL驱动
<mysql-connector-java.version>8.0.15</mysql-connector-java.version>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
oracle
Oracle驱动
<oracle.version>11.2</oracler.version>
<dependency>
<groupId>org.oracle</groupId>
<artifactId>oracle</artifactId>
<version>${oracle.version}</version>
</dependency>
非关系型数据库
spring-boot-starter-data-mongodb
对MongoDB 数据库的支持,包括spring-data-mongodb
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring-boot-starter-redis
对REDIS数据库的支持,包括Spring-redis
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
连接池
druid
<druid.version>1.1.5</druid.version>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
HikariCP
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
测试
spring-boot-starter-test
对常用测试依赖的支持,包括JUnit, Hamcrest和Mockito,还有spring-test模块
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
权限控制
spring-boot-starter-security
对spring -security模板引擎的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
shiro-spring
备注:(权限控制
<shrio-spring.version>1.4.0</shrio-spring.version>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shrio-spring.version}</version>
</dependency>
监控中心及注册中心
Dubbo+Zookeeper
<dubbo-spring-boot-starter.version>0.2.1.RELEASE</dubbo-spring-boot.version>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo-spring-boot-starter.version}</version>
</dependency>
springCloud
(父工程)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.M9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
springCloud+eureka 模块(注册)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
springCloud+客户端(调用)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
JSON格式转换
fastjson
<fastjson.version>1.2.16</fastjson.version>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
jackson-databind
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<jackson-databind.version>2.9.8</jackson-databindversion>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
gson
<gson.version>2.8.5</gson.version>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
commons组件
commons-lang3
用于java.lang层次结构中的类,或被认为是标准的,以证明java.lang中的存在
<commons.lang3.version>3.7</commons.lang3.version>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons.lang3.version}</version>
</dependency>
commons-io
包含实用程序类,流实现,文件过滤器,文件比较器,endian转换类等等
<commons.io.version>2.6</commons.io.version>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.version}</version>
</dependency>
commons-collections4
扩展和扩充Java Collections Framework的类型
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<commons-collections4.version>4.3<commons-collections4.version>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>${commons-collections4.version}</version>
</dependency>
commons-logging
允许与其他众所周知的日志记录系统进行可配置的桥接
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<commons-logging.version>1.2</commons-logging.version>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version>
</dependency>
常用工具
监控 spring-boot-starter-actuator
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
日志 spring-boot-starter-log4j2
org.springframework.boot spring-boot-starter-log4j2日志 slf4j-api
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<slf4j-api.version>1.8.0-beta4</slf4j-api.version>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j-api.version}</version>
</dependency>
lombok 简化JavaBean开发
简化JavaBean开发
<lombok.version>1.8.16</lombok.version>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
分页插件 pagehelper-spring-boot-start
分页插件
<pagehelper-spring-boot-starter.version>1.25</pagehelper-spring-boot-starter>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper-spring-boot-starter.version}</version>
</dependency>
spring-boot-starter-freemaker
对FreeMarker模板引擎的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
spring-boot-starter-mail
对javax.mail的支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
文件上传
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<fastdfs-client.version>1.25-RELEASE</fastdfs-client.version>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons-fileupload.version}</version>
</dependency>
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client</artifactId>
<version>${fastdfs-client.version}</version>
</dependency>
POI导入/导出
<poi.version>3.16</poi.version>
<poi-ooxml.version>3.14</poi-ooxml.version>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi-ooxml.version}</version>
</dependency>
activiti 工作流
<activiti-engine.version>7-201802-EA</activiti-engine.version>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti-engine.version}</version>
</dependency>
验证码
<kaptcha.version>2.3.2</kaptcha.version>
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>${kaptcha.version}</version>
</dependency>
阿里云发送短信
<aliyun-java-sdk-core.version>3.3.1</aliyun-java-sdk-core.version>
<aliyun-java-sdk-dysmsapi.version>1.0.0</aliyun-java-sdk-dysmsapi.version>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>${aliyun-java-sdk-core.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>${aliyun-java-sdk-dysmsapi.version}</version>
</dependency>
微信支付
<wxpay-sdk.version>0.0.3</wxpay-sdk.version>
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>${wxpay-sdk.version}</version>
</dependency>
支付宝支付
<sdk-alipay-starter.version>3.7.4.ALL</sdk-alipay-starter.version>
<dependency>
<groupId>net.guerlab</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>${sdk-alipay-starter.version}</version>
</dependency>
热部署 spring-boot-devtools
<spring-boot-devtools.version>2.1.3.RELEASE</spring-boot-devtools>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
httpclient
<httpclient.version>4.5.7</httpclient.version>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
joda-time
用于替换JDK日期处理的日期和时间库
<!-- https://mvnrepository.com/artifact/joda-time/joda-time -->
<joda-time.version>2.10.1</joda-time.version>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda-time.version}</version>
</dependency>
接口文档 springfox-swagger2
<!--接口文档地址:localhost:port/swagger-ui.html-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!--接口文档地址:localhost:port/doc.html-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>