spring-boot-starter-parent

一、你的项目 pom.xml 中有这段代码吗

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version><relativePath/>
</parent>

idea > new project > spring initializr 创建一个 Spring Boot 项目时:

或者是干脆从 https://start.spring.io/ 在线生成 Spring Boot 项目:

我们都会发现 spring-boot-starter-parent 的身影,那么他到底是干啥的呢?

这是 Spring Boot 的父级依赖,这样当前的项目就是 Spring Boot 项目了。spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。

使用它之后,常用的包依赖可以省去 version 标签,当我们搭建web应用的时候,可以像下面这样添加spring-boot-starter-web依赖:

<!-- Quartz定时任务 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId>
</dependency>

二、这个parent还提供了哪些特性呢

注意,关于 parent 提供的一些特性都是依据 maven 环境的,可以说
spring-boot-starter-parent 是 maven 独有的,如下是提供的一些特性:

1. 默认使用Java8,可添加以下配置修改版本:

<properties><java.version>1.8</java.version>
</properties>

2. 默认使用UTF-8编码,可添加以下配置修改编码:

<properties><project.build.sourceEncoding>GBK</project.build.sourceEncoding>
</properties>

3. 省略version信息

在 dependencies 里的部分配置可以不用填写 version 信息,这些 version 信息会从 spring-boot-dependencies 里得到继承。

正常来说项目应该添加了以下带版本的依赖:

<!-- JPA -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId><version>2.1.8</version>
</dependency>

使用 spring-boot-starter-parent 的话,可以这样,继承默认版本:

<!-- JPA -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

4. 识别过来资源过滤

例如,打包的时候把 src/main/resources 下所有文件都打包到包中。

<resource><directory>src/main/resources</directory><includes><include>**/*.*</include></includes><filtering>true</filtering>
</resource>

5. 识别插件的配置

比如 exec plugin, surefire, Git commit ID, shade

能够识别 application.propertiesapplication.yml 类型的文件,同时也能支持 profile-specific 类型的文件(如: application-foo.properties and application-foo.yml,这个功能可以更好的配置不同生产环境下的配置文件)。

三、覆盖并使用使用自己的依赖版本

使用 spring-boot-starter-parent 来帮我们管理 version 确实方便了不少,但是往往我们需要自己去配置某些版本,怎么办呢?

我们可以通过覆盖 properties 标签的 property 标签来达到修改依赖版本号的目的,例如上方的修改默认的编码方式、以及默认jdk版本:

<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

为什么这样可以实现?

我们了解 Spring Boot Dependencies 定义了所有 Spring Boot 项目的默认依赖关系管理。如果我们想要使用特定依赖项的新版本,我们可以通过在项目 pom 中指定新属性来覆盖该版本。

下面的摘录显示了由 Spring Boot Dependencies 父 pom 管理的一些重要依赖项。由于 Spring Boot Starter Parent 继承自 spring-boot-dependencies,因此它也共享所有这些特性。

<properties><activemq.version>5.13.4</activemq.version>...<ehcache.version>2.10.2.2.21</ehcache.version><ehcache3.version>3.1.1</ehcache3.version>...<h2.version>1.4.192</h2.version><hamcrest.version>1.3</hamcrest.version><hazelcast.version>3.6.4</hazelcast.version><hibernate.version>5.0.9.Final</hibernate.version><hibernate-validator.version>5.2.4.Final</hibernate-validator.version><hikaricp.version>2.4.7</hikaricp.version><hikaricp-java6.version>2.3.13</hikaricp-java6.version><hornetq.version>2.4.7.Final</hornetq.version><hsqldb.version>2.3.3</hsqldb.version><htmlunit.version>2.21</htmlunit.version><httpasyncclient.version>4.1.2</httpasyncclient.version><httpclient.version>4.5.2</httpclient.version><httpcore.version>4.4.5</httpcore.version><infinispan.version>8.2.2.Final</infinispan.version><jackson.version>2.8.1</jackson.version>....<jersey.version>2.23.1</jersey.version><jest.version>2.0.3</jest.version><jetty.version>9.3.11.v20160721</jetty.version><jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version><spring-security.version>4.1.1.RELEASE</spring-security.version><tomcat.version>8.5.4</tomcat.version><undertow.version>1.3.23.Final</undertow.version><velocity.version>1.7</velocity.version><velocity-tools.version>2.0</velocity-tools.version><webjars-hal-browser.version>9f96c74</webjars-hal-browser.version><webjars-locator.version>0.32</webjars-locator.version><wsdl4j.version>1.6.3</wsdl4j.version><xml-apis.version>1.4.01</xml-apis.version>
</properties>

所以,我们更改了 property 后,也实现了我们的需求,当然我们还有直接注明 version 的方式呢,如下:

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>

四、一个完整的pom.xml实例

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>club.sscai.tmax</groupId><artifactId>tmax</artifactId><version>0.0.1-SNAPSHOT</version><name>tmax</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.5.RELEASE</version><relativePath/></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!-- Mysql Connector --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!-- JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- Lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version></dependency><!-- Swagger API文档 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.7.0</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version></dependency><!-- 热更新 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习--基础知识阶段性总结--网络编程

网络编程&#xff1a; 端口&#xff1a; 物理端口&#xff1a; 逻辑端口&#xff1a;用于标识进程的逻辑地址&#xff0c;不同进程的标识&#xff1b;有效端口&#xff1a;0~65535&#xff0c;其中0~1024系统使用或保留端口。 java 中ip对象&#xff1a;InetAddress. import ja…

android 加载显示富文本——TextView显示富文本和WebView显示富文本,WebView显示图片适配屏幕宽度

"connectDeviceLedStatus_dcq":"请先确认设备指示灯为 <strong><font color\"#088A01\">绿灯闪烁</font></strong> 状态。", tv_dev_one_tip1.setText(Html.fromHtml(LangComm.getString("feeder_ble_bind_guide_t…

项目集成Spring Security

前言 之前写的 涂涂影院管理系统 这个 demo 是基于 shiro 来鉴权的&#xff0c;项目前后端分离后&#xff0c;显然集成 Spring Security 更加方便一些&#xff0c;毕竟&#xff0c;都用 Spring 了&#xff0c;权限管理当然 Spring Security. 花了半天时间整理的笔记&#xff0…

android 使用AIDL实现进程间通讯

一、创建服务端 1、首先创建AIDL文件 2、创建service&#xff0c;绑定AIDL接口 3、配置service <service android:name".AidlService"android:enabled"true"android:exported"true"><intent-filter android:priority"1000"&…

大数据入门第二十天——scala入门(二)scala基础02

一、 类、对象、继承、特质 1.类 Scala的类与Java、C的类比起来更简洁 定义&#xff1a; package com.jiangbei //在Scala中&#xff0c;类并不用声明为public。 //Scala源文件中可以包含多个类&#xff0c;所有这些类都具有公有可见性。 class Person {// 定义一个不可变的val…

SpringSecurity 整合 JWT

项目集成Spring Security&#xff08;一&#xff09; 在上一篇基础上继续集成 JWT &#xff0c;实现用户身份验证。 前言 前后端分离项目中&#xff0c;如果直接把 API 接口对外开放&#xff0c;我们知道这样风险是很大的&#xff0c;所以在上一篇中我们引入了 Spring Securit…

MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)...

Reference: https://blog.csdn.net/mchdba/article/details/52336203 一个开发同事做了一个框架&#xff0c;里面主键是uuid&#xff0c;我跟他建议说mysql不要用uuid用自增主键&#xff0c;自增主键效率高&#xff0c;他说不一定高&#xff0c;我说innodb的索引特性导致了自增…

String 字符串去除特殊字符和空格,正则表达式使用,%1$s,摄氏度和华氏度相互转换

*华氏度转摄氏度 ℃ (οF - 32) / 1.8 摄氏度转华氏度 F (9/5)*C 32 摄氏度转华氏度 fahrenheit (9/5.0) * wd 32; fahrenheit2 (9/5.0) * wd2 32; int hs (int) fahrenheit; 华氏度转摄氏度 degree (fahrenheit - 32)*5/9; 特殊字符 String tt "sdfdf{fwe }…

Spring Security 认证执行流程

本文基于 Spring Security 5.x 推荐阅读&#xff1a; 项目集成Spring Security SpringSecurity 整合 JWT 一、外层-正常登陆调用 项目启动后会自动寻找 UserDetailsService 实现类&#xff1b; 执行 UserDetailsService 的唯一方法 loadUserByName(String username) 并返回…

ScrollView嵌套ViewPager,ViewPage动态设置高度,嵌套事件冲突——滑动冲突解决方法

1、创建自定义ViewPager public class ViewPagerForScrollView extends ViewPager {int myh0 ;boolean ifme false;public ViewPagerForScrollView(Context context) {super(context);Log.i("lgq","高度111 " );}public ViewPagerForScrollView(Context c…

centos7下python3与python2共存并且开启py3虚拟环境

因为下载视频需要用到python3环境&#xff0c;今天在我的win上安装下载工具死活安装不上去&#xff0c;在大盘鸡上一下就安装成功了...可能在win上不兼容吧...无奈只能在大盘鸡上进行折腾了&#xff0c;顺便几个笔记 由于大盘鸡上好多程序基于python2的&#xff0c;所以就没法直…

Android开发启动未注册的activity,Hook使用demo

三个工具类 1、 /*** author : LGQ* date : 2020/05/11 14* desc :*/ public class HCallback implements Handler.Callback{private final String TAG"HCallback";private Handler mHandler;public HCallback(Handler handler){mHandlerhandler;}Overridepublic bo…

游戏UI系统设计

1.需要实现的功能 UI界面的管理&#xff08;窗体加载、窗体显示、窗体隐藏、窗体销毁等&#xff09;UI分层次&#xff08;比如弹窗、广播信息需要在上层&#xff09;UI界面的出场、入场动画UI界面的显示效果&#xff08;比如带透明背景、带高斯模糊背景等&#xff09;UI可以动态…

String转List,String转数组,List转ArrayList,数组转List

String转List private List<String> strings; strings Arrays.asList(dataBean.getImgs().split(",")); String转数组 String ac "12&/*?*/3"; String shuzu [] null; shuzu ac.split("");//是[12&/,?,3] 特殊字符用中括…