列位看官大家好拥知,今天我聊一聊springboot的依賴,廢話不多說碎赢,開始低剔!
跟之使用maven一樣,我們想要依賴誰(shuí),就在pom.xml中申明一下襟齿,maven自動(dòng)會(huì)幫我們搞定姻锁,
比如我們想用redis,就會(huì)這樣寫
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
比如想使用mongodb猜欺,就會(huì)這樣寫
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
再比如我們是個(gè)web工程位隶,我們就會(huì)這樣寫
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
不難發(fā)現(xiàn),他們有一個(gè)共同的特點(diǎn)都是以spring-boot-starter開始的开皿!其實(shí)呀spring-boot-starter 就是springboot的場(chǎng)景啟動(dòng)器涧黄,它的作用是幫我們導(dǎo)入某個(gè)模塊正常運(yùn)行的所依賴的組件,我們以spring-boot-starter-web為例副瀑,點(diǎn)進(jìn)去看看它干了什么
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.0.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>2.0.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.0.1.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.9.Final</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.5.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.5.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
從源碼中得出弓熏,這里導(dǎo)入了web模塊正常運(yùn)行所依賴的組件tomcat,hibernate-validator,jackson,spring-web,spring-webmvc等等,其實(shí)Spring Boot將所有的功能場(chǎng)景都抽取出來糠睡,做成一個(gè)個(gè)的starter(啟動(dòng)器)挽鞠,只需要在項(xiàng)目里面引入這些starter 相關(guān)場(chǎng)景的所有依賴都會(huì)導(dǎo)入進(jìn)來了。
啟動(dòng)器了解過后狈孔,大家是否還有一個(gè)疑惑呢信认,就是我們?cè)趐om.xml文件中導(dǎo)入依賴的時(shí)候,對(duì)比之前好像少了一個(gè)<version>標(biāo)簽均抽,這是怎么回事呢嫁赏,我們繼續(xù)走著...
其實(shí)啊在springboot使用的時(shí)候,我們必然會(huì)依賴一個(gè)父項(xiàng)目(spring-boot-starter-parent)油挥,在pom.xml文件中是這樣存在的
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
點(diǎn)進(jìn)父項(xiàng)目潦蝇,我們發(fā)現(xiàn),父項(xiàng)目也有一個(gè)依賴的父工程(spring-boot-dependencies)深寥,我們繼續(xù)點(diǎn)進(jìn)去...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
這時(shí)候攘乒,我們會(huì)發(fā)現(xiàn)有這樣一個(gè)標(biāo)簽<properties>,里面包含了好多還多的條目惋鹅,因?yàn)閷?shí)在是太長(zhǎng)太長(zhǎng)太長(zhǎng)太長(zhǎng)啦则酝,這里我就粘貼一部分給大家看下
<properties>
<log4j2.version>2.10.0</log4j2.version>
<mongodb.version>3.6.3</mongodb.version>
<mysql.version>5.1.46</mysql.version>
<quartz.version>2.3.0</quartz.version>
<rabbit-amqp-client.version>5.1.2</rabbit-amqp-client.version>
<spring-amqp.version>2.0.3.RELEASE</spring-amqp.version>
<spring-batch.version>4.0.1.RELEASE</spring-batch.version>
<spring-cloud-connectors.version>2.0.1.RELEASE</spring-cloud-connectors.version>
<spring-data-releasetrain.version>Kay-SR6</spring-data-releasetrain.version>
<spring-hateoas.version>0.24.0.RELEASE</spring-hateoas.version>
<spring-integration.version>5.0.4.RELEASE</spring-integration.version>
<spring-kafka.version>2.1.5.RELEASE</spring-kafka.version>
<sqlite-jdbc.version>3.21.0.1</sqlite-jdbc.version>
<xml-maven-plugin.version>1.0.1</xml-maven-plugin.version>
<xmlunit2.version>2.5.1</xmlunit2.version>
此處省略n多個(gè)...
</properties>
到這里大家也看出來了,長(zhǎng)歸長(zhǎng)闰集,但其中的規(guī)律不難發(fā)現(xiàn)沽讹,里面所有的條目無(wú)一例外都包含一個(gè)關(guān)鍵字“version”,沒錯(cuò)武鲁,我們的依賴的組件不需要寫版本號(hào)就是因?yàn)樗陌姹咎?hào)springboot會(huì)從這里去人邸!(沒有在dependencies里面管理的依賴自然需要聲明版本號(hào))
總結(jié)一下:
1.spring-boot-starter Spring Boot場(chǎng)景啟動(dòng)器沐鼠,為模塊正常運(yùn)行導(dǎo)入所依賴的組件
2.父項(xiàng)目 Spring Boot的版本仲裁中心