官术网_书友最值得收藏!

5.1 約定優(yōu)于配置

首先講解一下Spring Boot的核心設(shè)計(jì)思想:約定優(yōu)于配置。

很多Java開(kāi)發(fā)人員在閱讀和學(xué)習(xí)Spring Boot教程的時(shí)候往往會(huì)對(duì)自動(dòng)化配置感到困惑,更會(huì)被教程中所謂的Spring Boot核心設(shè)計(jì)思想約定優(yōu)于配置所迷惑。那么,這個(gè)核心設(shè)計(jì)思想究竟是什么呢?

約定優(yōu)于配置是由英文convention over configuration翻譯而來(lái)的,也可翻譯為慣例優(yōu)先原則。這并不是一個(gè)新潮的概念,相反,這個(gè)概念很早就被提出來(lái)了。convention意為慣例、習(xí)俗、規(guī)矩,因此,可以說(shuō)convention over configuration是一個(gè)理念,它并不是Spring Boot所獨(dú)有的特性。

這個(gè)理念其實(shí)一直都在被遵循、被使用。舉一個(gè)具體的例子,在MVC項(xiàng)目的開(kāi)發(fā)中會(huì)把實(shí)體類(lèi)放到entity目錄下、把數(shù)據(jù)接口層定義在dao目錄下、把控制器定義在controller目錄下。如果在數(shù)據(jù)庫(kù)中有一張名稱(chēng)為tb_mall_user的表,那么可能在項(xiàng)目中就對(duì)應(yīng)有一個(gè)名稱(chēng)為MallUser的實(shí)體類(lèi)。這就是開(kāi)發(fā)人員都在遵循的規(guī)矩或者說(shuō)是一種約定。但是所謂的規(guī)矩或者約定也需要配置文件來(lái)支持。約定優(yōu)于配置并不是說(shuō)不需要配置,它其實(shí)是一種開(kāi)發(fā)原則,目的是在一定限度內(nèi)減少需要開(kāi)發(fā)人員手動(dòng)配置的工作量,用默認(rèn)的配置達(dá)到開(kāi)發(fā)人員的需求。

正因?yàn)樽裱@個(gè)約定,Spring Boot才讓開(kāi)發(fā)人員的開(kāi)發(fā)效率更高。比如在第4章中開(kāi)發(fā)的第一個(gè)Spring Boot項(xiàng)目。在項(xiàng)目中加入spring-boot-starter-web后,Spring Boot會(huì)自動(dòng)導(dǎo)入Spring MVC的相關(guān)依賴(lài)和一個(gè)內(nèi)置的Tomcat容器。在這里就有“約定優(yōu)于配置”的理念。在導(dǎo)入spring-boot-starter-web后,就表示開(kāi)發(fā)人員與Spring Boot之間約定當(dāng)前項(xiàng)目是一個(gè)Web項(xiàng)目。既然是Web項(xiàng)目,又進(jìn)一步約定開(kāi)發(fā)人員會(huì)使用Spring MVC,從而自動(dòng)裝配DispatchServlet到IOC容器中。同理,開(kāi)發(fā)人員在項(xiàng)目中加入jdbc-starter后,就表示開(kāi)發(fā)人員與Spring Boot之間約定會(huì)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,Spring Boot會(huì)自動(dòng)導(dǎo)入JDBC相關(guān)的依賴(lài)并配置一個(gè)數(shù)據(jù)源對(duì)象供開(kāi)發(fā)人員調(diào)用。

因?yàn)橄嚓P(guān)配置工作由Spring Boot主動(dòng)進(jìn)行,并且可以達(dá)到同樣的目的,開(kāi)發(fā)人員的工作量就減少了。這就是Spring Boot中的約定優(yōu)于配置的特性。當(dāng)然,如果開(kāi)發(fā)人員想要自己完成相關(guān)配置,也可以通過(guò)編碼的方式操作。

這種簡(jiǎn)潔高效的配置方式源于Spring Boot眾多的自動(dòng)化配置類(lèi)及相關(guān)的編碼設(shè)計(jì)。這些自動(dòng)化配置類(lèi)在類(lèi)路徑META-INF/spring.factories文件中,它通過(guò)@EnableAuto Configuration注解加載到容器中并發(fā)揮作用。在Spring Boot中,開(kāi)發(fā)人員甚至可以做到零配置快速構(gòu)建出所需的應(yīng)用。

為了讀者能更好地理解Spring Boot約定優(yōu)于配置的設(shè)計(jì)思想,筆者將在后續(xù)章節(jié)中進(jìn)行詳細(xì)的源碼剖析和講解。

主站蜘蛛池模板: 上饶市| 南阳市| 兴文县| 沙坪坝区| 长阳| 余庆县| 台南县| 鹤岗市| 右玉县| 蛟河市| 光泽县| 兰考县| 绥宁县| 获嘉县| 无为县| 鄂托克前旗| 利辛县| 莆田市| 福泉市| 深圳市| 富阳市| 高碑店市| 富锦市| 十堰市| 伊金霍洛旗| 鸡西市| 洪雅县| 三门县| 洛隆县| 洛宁县| 青神县| 临泽县| 黎川县| 西充县| 宿松县| 岑巩县| 买车| 上高县| 宁安市| 沁阳市| 安徽省|