SpringBoot良心教程(四)依賴管理特性--瞭解自動配置原理
阿新 • • 發佈:2021-07-24
SpringBoot特點
1.1、依賴管理
我們在上一個HelloWorld的專案中,引入了一個父專案,然後細心的同學會發現,我們在引入其他dependency的時候,都沒有寫版本號:
<!-- pom.xml中引入的父專案 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.2</version> </parent> <!-- 上面的父專案裡的父專案 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.2</version> </parent> <!-- 再進入上述父專案,可以在properties標籤中看到,原來版本號都寫在這裡 --> <properties> <activemq.version>5.16.2</activemq.version> <antlr2.version>2.7.7</antlr2.version> <commons-dbcp2.version>2.8.0</commons-dbcp2.version> <commons-lang3.version>3.12.0</commons-lang3.version> <commons-pool.version>1.6</commons-pool.version> <commons-pool2.version>2.9.0</commons-pool2.version> <couchbase-client.version>3.1.6</couchbase-client.version> <db2-jdbc.version>11.5.5.0</db2-jdbc.version> <dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version> <derby.version>10.14.2.0</derby.version> <dropwizard-metrics.version>4.1.24</dropwizard-metrics.version> <ehcache.version>2.10.9.2</ehcache.version> <ehcache3.version>3.9.4</ehcache3.version> <elasticsearch.version>7.12.1</elasticsearch.version> <embedded-mongo.version>3.0.0</embedded-mongo.version> <flyway.version>7.7.3</flyway.version> <freemarker.version>2.3.31</freemarker.version> <git-commit-id-plugin.version>4.0.5</git-commit-id-plugin.version> <glassfish-el.version>3.0.3</glassfish-el.version> <glassfish-jaxb.version>2.3.4</glassfish-jaxb.version> <groovy.version>3.0.8</groovy.version> </properties> <!-- 在下面的dependencies中,去取用上面的版本號,以hibernate舉例 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency>
以上可以看出,父工程中幾乎聲明瞭所有開發中用到的jar的版本號,稱為自動版本仲裁機制
,也就是當前SpringBoot版本中的適配版本。
以後怎麼引入需要的依賴呢
比如想引入mysql,直接在pom.xml檔案中寫入
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
可以在parent的parent工程中找到SpringBoot已經規定了版本號(仲裁)的mysql,所以不用寫版本號。
重新整理後,mysql依賴就被匯入了。
同理,進入之前HelloWorld專案中的,可以看到,其實spring-boot-starter-web
就是幫我們一次性匯入了web開發常用框架以及Tomcat伺服器。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.5.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.5.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.5.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.3.8</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.8</version> <scope>compile</scope> </dependency> </dependencies>
那如果對他仲裁的版本號不滿意,比如想把MySQL8改為MySQL5,那怎麼辦呢?
未完待續