Spring Boot 精要
Spring Boot的四個(gè)核心:
- 自動(dòng)配置
- 起步依賴(lài)
- 命令行界面(可選特性)
- Actuactor
-
自動(dòng)配置
使用JDBC訪(fǎng)問(wèn)關(guān)系型數(shù)據(jù)庫(kù)
@Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(datasource); }
這段Bean聲明創(chuàng)建了一個(gè)JdbcTemplate的實(shí)例,注入了一個(gè)DataSource依賴(lài)枫攀。
配置DataSource Bean(以H2數(shù)據(jù)庫(kù)為例)
@Bean public DataSource dataSource() { return new EmbededDataBuilder() .setType(EmbededDataBaseType.H2) .addScript('schema.sql', 'data.sql') .build(); }
這個(gè)Bean配置方法創(chuàng)建了一個(gè)嵌入式數(shù)據(jù)庫(kù)括饶,并指定在該數(shù)據(jù)庫(kù)上執(zhí)行兩段SQL腳本。build() 方法返回了一個(gè)指向該數(shù)據(jù)庫(kù)的引用来涨。
Spring Boot的自動(dòng)配置遠(yuǎn)不止嵌入式數(shù)據(jù)庫(kù)和JdbcTemplate, 還設(shè)計(jì)Java持久化(JPA)图焰、 Thymeleaf模板、安全和Spring MVC蹦掐。
-
起步依賴(lài)
起步依賴(lài)其實(shí)就是特殊的Maven依賴(lài)或者Gradle依賴(lài)技羔,利用了傳遞依賴(lài)解析,把常用庫(kù)聚合到一起卧抗,組成了幾個(gè)為特定功能而定制的依賴(lài)藤滥。
向項(xiàng)目中添加Web起步依賴(lài),實(shí)際上指定了應(yīng)用程序所需的一些功能社裆。如果應(yīng)用程序需要用到JPA拙绊,那么久可以引入JPA起步依賴(lài)。如果需要安全功能浦马,那么久可以加入security起步依賴(lài)时呀。
-
命令行界面(CLI)
Spring Boot CLI利用了起步依賴(lài)和自動(dòng)配置张漂,讓你專(zhuān)注于代碼本身晶默。CLI能檢測(cè)到你使用了哪些類(lèi),它知道要向ClassPath中添加哪些豈不依賴(lài)才能讓它運(yùn)轉(zhuǎn)起來(lái)航攒。
CLI是Spring Boot的非必要組成部分磺陡,但是它大大地簡(jiǎn)化了開(kāi)發(fā)。
-
Acutactor
其他三個(gè)部分旨在簡(jiǎn)化Spring開(kāi)發(fā),而Acutactor提供了在運(yùn)行時(shí)檢查應(yīng)用程序內(nèi)部情況的能力币他。
它能窺探應(yīng)用程序內(nèi)部的細(xì)節(jié):- Spring應(yīng)用程序上下文里配置的Bean
- Spring Boot自動(dòng)配置做的決策
- 應(yīng)用程序取到的環(huán)境變量坞靶、系統(tǒng)屬性、配置屬性和命令行參數(shù)
- 應(yīng)用程序里線(xiàn)程的當(dāng)前狀態(tài)
- 應(yīng)用程序最近處理過(guò)的HTTP請(qǐng)求的追蹤情況
- 各種和內(nèi)存用量蝴悉、垃圾回收彰阴、Web請(qǐng)求以及數(shù)據(jù)源用量相關(guān)的指標(biāo)。
Spring Boot不是什么
Spring Boot簡(jiǎn)化了開(kāi)發(fā)拍冠,但是Spring Boot不是全能的尿这。
-
Spring Boot不是應(yīng)用服務(wù)器
Spring Boot在應(yīng)用程序中嵌入了一個(gè)Servlet容器(Tomcat、Jetty或Undertow)庆杜,以實(shí)現(xiàn)這一功能射众。
-
Spring Boot沒(méi)有實(shí)現(xiàn)JMS或JPA之類(lèi)的企業(yè)級(jí)Java規(guī)范
Spring Boot確實(shí)支持不少企業(yè)級(jí)Java規(guī)范,但是要在Spring里自動(dòng)配置支持那些特性的Bean晃财。
-
Spring Boot沒(méi)有引入任何形式的代碼生成
Spring Boot利用了Spring 4的條件化配置特性叨橱,以及Maven和Gradle提供的傳遞依賴(lài)解析,以實(shí)現(xiàn)Spring應(yīng)用程序上下文里的自動(dòng)配置断盛。