Spring Boot 專案與普通專案在包管理上的差別
主要差別就是,Spring Boot在包管理上用了starter template,你應該經常看到xxx-starter這類的dependency。實際上就是一個整合包。例如一個spring-boot-web-starter,就包含了所有web應用要用到的基礎包。control點進去看就知道了,實際上就是引入了內建的tomcat + JSON處理(jackson)+ spring-web + spring-web-mvc。置於引入Hibernate-Validtor的話,是因為Spring Boot推薦使用JPA,而Hibernate是JPA規範的一種實現。如果你使用的是Mybatis,可以除掉這個包。
整合包有什麼好處?
我看到的好處有兩個,一個是很明顯pom檔案看起來清爽多了,包數量看起來少了,也不用再像以前那樣<!-- web begin--> <!-- web end--> 來標識哪些是web要用到的包了。
另一方面,就是版本的問題了,有些時候我們需要的包都引入了,但是卻發現會報莫名其妙的異常,查了半天才發現,是jar包版本不對。整合包的好處就是,它Spring Boot官方整理好的,能保證這些包可以和諧共處的。
可以移除整合包的部分內容嗎?
有些人很反感這種全家桶,或者想要替換其中的某個包。這當然可以,比如,你不想用spring-boot-web-starter中的tomcat包,想替換成jetty。那直接exclude掉,然後單獨引入jetty就好。注意了,要引入的也是spring boot提供的,不然可能對接不上。
Spring Boot 有提供哪些整合包?
實際上就是你利用spring initializer構建專案的時候,可以勾選的那些內容。每勾選一個內容,相當於新增一個對應的整合包到對應的專案。