書名: Spring Boot開發實戰作者名: 陳光劍本章字數: 961字更新時間: 2019-01-05 10:00:21
1.3 約定優于配置極簡化理念
Spring Boot充分利用了JavaConfig的配置模式以及“約定優于配置”(Convention Over Configuration, COC)的理念,極大地簡化了基于Spring MVC的Web應用和REST服務的開發。
不用看那一堆帶著無數尖括號的XML真的讓人很神清氣爽。用JavaConfig注解方式可以讓人很容易明白配置代碼中的關鍵信息。
例如,一個標準的基于Gradle構建的Spring Boot應用程序目錄結構約定如下:
. ├── LICENSE ├── README.md ├── build.gradle ├── gradle | └── wrapper | ├── gradle-wrapper.jar | └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── src ├── main | ├── java | ├── kotlin | | └── com | | └── easy | | └── Spring Boot | | └── demo2_aop_logging | | ├── Demo2AopLoggingApplication.kt | | ├── aop | | | └── LogAspect.kt | | └── controller | | └── HelloAopController.kt | └── resources | ├── application-daily.properties | ├── application-dev.properties | ├── application-prod.properties | ├── application.properties | ├── static | └── templates └── test ├── java ├── kotlin | └── com | └── easy | └── Spring Boot | └── demo2_aop_logging | └── Demo2AopLoggingApplicationTests.kt └── resources 23 directories, 20 files
目錄文件簡單說明如下:
?build.gradle——Gradle工程項目配置文件。
?src/main/java——項目Java源代碼目錄。
?src/main/kotlin——項目Kotlin源代碼目錄。
?src/main/resources——項目資源文件目錄。
?src/test/java——測試Java源代碼目錄。
?src/test/kotlin——測試Kotlin源代碼目錄。
?src/test/resources——測試資源文件目錄。
許多框架使用了COC的思想,包括:Spring、Ruby on Rails、Kohana PHP、Grails、Grok、Zend Framework、CakePHP、Symfony、Maven、ASP.NET MVC、Web2py(MVC)、Apache Wicket等。COC是一個古老的思想理念,甚至在Java類庫中也可以找出這一概念的蹤跡。JavaBean規范中很多就是依賴這個理念。
例如,在知名的Java對象關系映射(ORM)框架Hibernate的早期版本中,將類及其屬性映射到數據庫上在XML文件中進行配置,而其中大部分信息都應能夠按照約定得到,如將類映射到對應的數據庫表,將類屬性一一映射到表上的字段。在后續的版本中拋棄了這樣的XML配置文件,而是采用Java類屬性使用駝峰式命名對應數據庫表中的下劃線命名這個恰當的約定,大大簡化了配置。而對于不符合這些約定的特殊情形,就使用Java注解來標注說明。
例如,Spring通過使用約定好的注解來標注Spring應用中各層中的Bean類:
?@Component——標注一個普通的Spring Bean類。
?@Controller——標注一個控制器組件類。
?@Service——標注一個業務邏輯組件類。
?@Repository——標注一個DAO組件類。
其實Java的成功,Spring的成功,XML的成功,Maven的成功等,都有其必然性,因為它們的設計理念都包含一個很簡單但很深刻的道理——那就是“通用”。為什么通用?因為遵循約定。
提示
約定優于配置(Convention Over Configuration, COC)也稱為按約定編程,是一種軟件設計范式,旨在減少軟件開發人員需做決定的數量,獲得簡單的好處,而又不失靈活性。