- Spring Boot實(shí)戰(zhàn):從0開(kāi)始動(dòng)手搭建企業(yè)級(jí)項(xiàng)目
- 十三
- 902字
- 2021-08-13 19:43:35
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ì)的源碼剖析和講解。
- Functional Python Programming
- Mastering ServiceStack
- JavaScript+DHTML語(yǔ)法與范例詳解詞典
- Getting Started with PowerShell
- 高級(jí)C/C++編譯技術(shù)(典藏版)
- Java Web開(kāi)發(fā)技術(shù)教程
- 教孩子學(xué)編程:C++入門(mén)圖解
- Unreal Engine 4 Shaders and Effects Cookbook
- Learning OpenStack Networking(Neutron)(Second Edition)
- HTML 5與CSS 3權(quán)威指南(第3版·上冊(cè))
- C語(yǔ)言從入門(mén)到精通
- Mastering Gephi Network Visualization
- 軟件測(cè)試分析與實(shí)踐
- RESTful Web API Design with Node.js(Second Edition)
- Swift 2 Design Patterns