本篇問(wèn)題主要來(lái)自今日頭條文章轉(zhuǎn)載,轉(zhuǎn)載的目的是添加一些資料的鏈接為了自己方便查閱帆喇。
https://www.toutiao.com/a6646878877215883783
問(wèn)題一:Spring Boot鸽捻、Spring MVC 和 Spring 有什么區(qū)別统锤?
1赦抖、Spring
Spring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉(zhuǎn)。
當(dāng)我們恰當(dāng)?shù)氖褂?DI 或者是 IOC 的時(shí)候璧诵,我們可以開(kāi)發(fā)松耦合應(yīng)用。松耦合應(yīng)用的單元測(cè)試可以很容易的進(jìn)行仇冯。
2之宿、Spring MVC
Spring MVC 提供了一種分離式的方法來(lái)開(kāi)發(fā) Web 應(yīng)用。通過(guò)運(yùn)用像 DispatcherServelet苛坚,MoudlAndView 和 ViewResolver 等一些簡(jiǎn)單的概念比被,開(kāi)發(fā) Web 應(yīng)用將會(huì)變的非常簡(jiǎn)單。
3泼舱、SpringBoot
Spring 和 SpringMVC 的問(wèn)題在于需要配置大量的參數(shù)等缀。
Spring Boot 通過(guò)一個(gè)自動(dòng)配置和啟動(dòng)的項(xiàng)來(lái)目解決這個(gè)問(wèn)題。為了更快的構(gòu)建產(chǎn)品就緒應(yīng)用程序娇昙,Spring Boot 提供了一些非功能性特征尺迂。
問(wèn)題二:什么是自動(dòng)配置?
Spring 和 SpringMVC 的問(wèn)題在于需要配置大量的參數(shù)冒掌。
我們能否帶來(lái)更多的智能噪裕?當(dāng)一個(gè) MVC JAR 添加到應(yīng)用程序中的時(shí)候,我們能否自動(dòng)配置一些 beans股毫?
Spring 查看(CLASSPATH 上可用的框架)已存在的應(yīng)用程序的配置膳音。在此基礎(chǔ)上,Spring Boot 提供了配置應(yīng)用程序和框架所需要的基本配置铃诬。這就是自動(dòng)配置祭陷。
問(wèn)題三:什么是 Spring Boot Starter 苍凛?
啟動(dòng)器是一套方便的依賴的描述符,它可以放在自己的程序中兵志。你可以一站式的獲取你所需要的 Spring 和相關(guān)技術(shù)醇蝴,而不需要依賴描述符的通過(guò)示例代碼搜索和復(fù)制黏貼的負(fù)載。
例如想罕,如果你想使用 Sping 和 JPA 訪問(wèn)數(shù)據(jù)庫(kù)哑蔫,只需要你的項(xiàng)目包含 spring-boot-starter-data-jpa 依賴項(xiàng),你就可以完美進(jìn)行弧呐。
問(wèn)題四:你能否舉一個(gè)例子來(lái)解釋更多 Starters 的內(nèi)容闸迷?
讓我們來(lái)思考一個(gè) Starter 的例子 -Spring Boot Starter Web。
如果你想開(kāi)發(fā)一個(gè) web 應(yīng)用程序或者是公開(kāi) REST 服務(wù)的應(yīng)用程序俘枫。Spring Boot Start Web 是首選腥沽。讓我們使用 Spring Initializr 創(chuàng)建一個(gè) Spring Boot Start Web 的快速項(xiàng)目。
Spring Boot Start Web 的依賴項(xiàng)
下面的截圖是添加進(jìn)我們應(yīng)用程序的不同的依賴項(xiàng)
依賴項(xiàng)可以被分為:
Spring - core鸠蚪,beans今阳,context,aop
Web MVC - (Spring MVC)
Jackson - for JSON Binding
Validation - Hibernate,Validation API
Enbedded Servlet Container - Tomcat
Logging - logback,slf4j
任何經(jīng)典的 Web 應(yīng)用程序都會(huì)使用所有這些依賴項(xiàng)茅信。Spring Boot Starter Web 預(yù)先打包了這些依賴項(xiàng)盾舌。
作為一個(gè)開(kāi)發(fā)者,我不需要再擔(dān)心這些依賴項(xiàng)和它們的兼容版本蘸鲸。
問(wèn)題五:Spring Boot 還提供了其它的哪些 Starter Project Options妖谴?
Spring Boot 也提供了其它的啟動(dòng)器項(xiàng)目包括,包括用于開(kāi)發(fā)特定類(lèi)型應(yīng)用程序的典型依賴項(xiàng)酌摇。
spring-boot-starter-web-services - SOAP Web Services膝舅;
spring-boot-starter-web - Web 和 RESTful 應(yīng)用程序;
spring-boot-starter-test - 單元測(cè)試和集成測(cè)試窑多;
spring-boot-starter-jdbc - 傳統(tǒng)的 JDBC仍稀;
spring-boot-starter-hateoas - 為服務(wù)添加 HATEOAS 功能;
spring-boot-starter-security - 使用 SpringSecurity 進(jìn)行身份驗(yàn)證和授權(quán)埂息;
spring-boot-starter-data-jpa - 帶有 Hibeernate 的 Spring Data JPA技潘;
spring-boot-starter-data-rest - 使用 Spring Data REST 公布簡(jiǎn)單的 REST 服務(wù);
問(wèn)題六:Spring 是如何快速創(chuàng)建產(chǎn)品就緒應(yīng)用程序的千康?
Spring Boot 致力于快速產(chǎn)品就緒應(yīng)用程序享幽。為此,它提供了一些譬如高速緩存吧秕,日志記錄琉闪,監(jiān)控和嵌入式服務(wù)器等開(kāi)箱即用的非功能性特征。
spring-boot-starter-actuator - 使用一些如監(jiān)控和跟蹤應(yīng)用的高級(jí)功能
spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat - 選擇您的特定嵌入式 Servlet 容器
spring-boot-starter-logging - 使用 logback 進(jìn)行日志記錄
spring-boot-starter-cache - 啟用 Spring Framework 的緩存支持
Spring2 和 Spring5 所需要的最低 Java 版本是什么砸彬?
Spring Boot 2.0 需要 Java8 或者更新的版本颠毙。Java6 和 Java7 已經(jīng)不再支持。
推薦閱讀:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0.0-M1-Release-Notes
問(wèn)題七#:創(chuàng)建一個(gè) Spring Boot Project 的最簡(jiǎn)單的方法是什么砂碉?
Spring Initializr是啟動(dòng) Spring Boot Projects 的一個(gè)很好的工具蛀蜜。
就像上圖中所展示的一樣,我們需要做一下幾步:
登錄 Spring Initializr增蹭,按照以下方式進(jìn)行選擇:
選擇 com.in28minutes.springboot 為組
選擇 studet-services 為組件
選擇下面的依賴項(xiàng)
Web
Actuator
DevTools
點(diǎn)擊生 GenerateProject
將項(xiàng)目導(dǎo)入 Eclipse滴某。文件 - 導(dǎo)入 - 現(xiàn)有的 Maven 項(xiàng)目
問(wèn)題八:Spring Initializr 是創(chuàng)建 Spring Boot Projects 的唯一方法嗎?
不是的滋迈。
Spring Initiatlizr 讓創(chuàng)建 Spring Boot 項(xiàng)目變的很容易霎奢,但是,你也可以通過(guò)設(shè)置一個(gè) maven 項(xiàng)目并添加正確的依賴項(xiàng)來(lái)開(kāi)始一個(gè)項(xiàng)目饼灿。
在我們的 Spring 課程中幕侠,我們使用兩種方法來(lái)創(chuàng)建項(xiàng)目。
第一種方法是 start.spring.io 碍彭。
另外一種方法是在項(xiàng)目的標(biāo)題為“Basic Web Application”處進(jìn)行手動(dòng)設(shè)置晤硕。
手動(dòng)設(shè)置一個(gè) maven 項(xiàng)目
這里有幾個(gè)重要的步驟:
在 Eclipse 中,使用文件 - 新建 Maven 項(xiàng)目來(lái)創(chuàng)建一個(gè)新項(xiàng)目
添加依賴項(xiàng)庇忌。
添加 maven 插件舞箍。
添加 Spring Boot 應(yīng)用程序類(lèi)。
到這里皆疹,準(zhǔn)備工作已經(jīng)做好疏橄!
問(wèn)題九:為什么我們需要 spring-boot-maven-plugin?
spring-boot-maven-plugin 提供了一些像 jar 一樣打包或者運(yùn)行應(yīng)用程序的命令。
spring-boot:run 運(yùn)行你的 SpringBooty 應(yīng)用程序略就。
spring-boot:repackage 重新打包你的 jar 包或者是 war 包使其可執(zhí)行
spring-boot:start 和 spring-boot:stop 管理 Spring Boot 應(yīng)用程序的生命周期(也可以說(shuō)是為了集成測(cè)試)软族。
spring-boot:build-info 生成執(zhí)行器可以使用的構(gòu)造信息。
問(wèn)題十:如何使用 SpringBoot 自動(dòng)重裝我的應(yīng)用程序残制?
使用 Spring Boot 開(kāi)發(fā)工具立砸。
把 Spring Boot 開(kāi)發(fā)工具添加進(jìn)入你的項(xiàng)目是簡(jiǎn)單的。
把下面的依賴項(xiàng)添加至你的 Spring Boot Project pom.xml 中
重啟應(yīng)用程序初茶,然后就可以了颗祝。
同樣的,如果你想自動(dòng)裝載頁(yè)面恼布,有可以看看 FiveReload
http://www.logicbig.com/tutorials/spring-framework/spring-boot/boot-live-reload/.
在我測(cè)試的時(shí)候螺戳,發(fā)現(xiàn)了 LiveReload 漏洞,如果你測(cè)試時(shí)也發(fā)現(xiàn)了折汞,請(qǐng)一定要告訴我們倔幼。
問(wèn)題十一: 什么是嵌入式服務(wù)器?我們?yōu)槭裁匆褂们度胧椒?wù)器呢?
思考一下在你的虛擬機(jī)上部署應(yīng)用程序需要些什么爽待。
第一步: 安裝 Java
第二部: 安裝 Web 或者是應(yīng)用程序的服務(wù)器(Tomat/Wbesphere/Weblogic 等等)
第三部: 部署應(yīng)用程序 war 包
如果我們想簡(jiǎn)化這些步驟损同,應(yīng)該如何做呢翩腐?
讓我們來(lái)思考如何使服務(wù)器成為應(yīng)用程序的一部分?
你只需要一個(gè)安裝了 Java 的虛擬機(jī)膏燃,就可以直接在上面部署應(yīng)用程序了茂卦,
是不是很爽?
這個(gè)想法是嵌入式服務(wù)器的起源组哩。
當(dāng)我們創(chuàng)建一個(gè)可以部署的應(yīng)用程序的時(shí)候等龙,我們將會(huì)把服務(wù)器(例如,tomcat)嵌入到可部署的服務(wù)器中伶贰。
例如蛛砰,對(duì)于一個(gè) Spring Boot 應(yīng)用程序來(lái)說(shuō),你可以生成一個(gè)包含 Embedded Tomcat 的應(yīng)用程序 jar黍衙。你就可以想運(yùn)行正常 Java 應(yīng)用程序一樣來(lái)運(yùn)行 web 應(yīng)用程序了泥畅。
嵌入式服務(wù)器就是我們的可執(zhí)行單元包含服務(wù)器的二進(jìn)制文件(例如,tomcat.jar)们豌。
問(wèn)題十二:如何在 Spring Boot 中添加通用的 JS 代碼涯捻?及其授權(quán)錯(cuò)誤
在源文件夾下,創(chuàng)建一個(gè)名為 static 的文件夾望迎。然后障癌,你可以把你的靜態(tài)的內(nèi)容放在這里面。
例如辩尊,myapp.js 的路徑是 resources/static/js/myapp.js
你可以參考它在 jsp 中的使用方法:
錯(cuò)誤:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.
該如何來(lái)修復(fù)這個(gè)錯(cuò)誤呢涛浙?
兩種方法:
方法 1:關(guān)閉安全驗(yàn)證
application.properties
management.security.enabled:FALSE
方法二:在日志中搜索密碼并傳遞至請(qǐng)求標(biāo)頭中
問(wèn)題十三:什么是 Spring Data?
來(lái)自://projects.spring.io/spring- data/
Spring Data 的使命是在保證底層數(shù)據(jù)存儲(chǔ)特殊性的前提下摄欲,為數(shù)據(jù)訪問(wèn)提供一個(gè)熟悉的轿亮,一致性的,基于 Spring 的編程模型胸墙。這使得使用數(shù)據(jù)訪問(wèn)技術(shù)我注,關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù),map-reduce 框架以及基于云的數(shù)據(jù)服務(wù)變得很容易迟隅。
為了讓它更簡(jiǎn)單一些但骨,Spring Data 提供了不受底層數(shù)據(jù)源限制的 Abstractions 接口。
下面來(lái)舉一個(gè)例子:
你可以定義一簡(jiǎn)單的庫(kù)智袭,用來(lái)插入奔缠,更新,刪除和檢索代辦事項(xiàng)吼野,而不需要編寫(xiě)大量的代碼校哎。
問(wèn)題十四:什么是 Spring Data REST?======需要進(jìn)一步學(xué)習(xí)暫做記錄
Spring Data TEST 可以用來(lái)發(fā)布關(guān)于 Spring 數(shù)據(jù)庫(kù)的 HATEOAS RESTful 資源。
下面是一個(gè)使用 JPA 的例子:
不需要寫(xiě)太多代碼瞳步,我們可以發(fā)布關(guān)于 Spring 數(shù)據(jù)庫(kù)的 RESTful API闷哆。
下面展示的是一些關(guān)于 TEST 服務(wù)器的例子
POST:
URL:http://localhost:8080/todos
Use Header:Content-Type:Type:application/json
Request Content
代碼如下:
響應(yīng)內(nèi)容:
響應(yīng)包含新創(chuàng)建資源的 href腰奋。
問(wèn)題十五:path=”users”, collectionResourceRel=”users” 如何與 Spring Data Rest 一起使用?
path- 這個(gè)資源要導(dǎo)出的路徑段阳准。
collectionResourceRel- 生成指向集合資源的鏈接時(shí)使用的 rel 值氛堕。在生成 HATEOAS 鏈接時(shí)使用馏臭。
問(wèn)題十六:當(dāng) Spring Boot 應(yīng)用程序作為 Java 應(yīng)用程序運(yùn)行時(shí)野蝇,后臺(tái)會(huì)發(fā)生什么?
如果你使用 Eclipse IDE括儒,Eclipse maven 插件確保依賴項(xiàng)或者類(lèi)文件的改變一經(jīng)添加绕沈,就會(huì)被編譯并在目標(biāo)文件中準(zhǔn)備好!在這之后帮寻,就和其它的 Java 應(yīng)用程序一樣了乍狐。
當(dāng)你啟動(dòng) java 應(yīng)用程序的時(shí)候,spring boot 自動(dòng)配置文件就會(huì)魔法般的啟用了固逗。
當(dāng) Spring Boot 應(yīng)用程序檢測(cè)到你正在開(kāi)發(fā)一個(gè) web 應(yīng)用程序的時(shí)候浅蚪,它就會(huì)啟動(dòng) tomcat。
問(wèn)題十七:我們能否在 spring-boot-starter-web 中用 jetty 代替 tomcat烫罩?
在 spring-boot-starter-web 移除現(xiàn)有的依賴項(xiàng)惜傲,并把下面這些添加進(jìn)去。
問(wèn)題十八:如何使用 Spring Boot 生成一個(gè) WAR 文件贝攒?
推薦閱讀:
https://spring.io/guides/gs/convert-jar-to-war/
下面有 spring 說(shuō)明文檔直接的鏈接地址:
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging
Spring boot項(xiàng)目打包及運(yùn)行方式--牽手生活
問(wèn)題十九:如何使用 Spring Boot 部署到不同的服務(wù)器盗誊?
你需要做下面兩個(gè)步驟:
在一個(gè)項(xiàng)目中生成一個(gè) war 文件。
將它部署到你最喜歡的服務(wù)器(websphere 或者 Weblogic 或者 Tomcat and so on)隘弊。
第一步:這本入門(mén)指南應(yīng)該有所幫助:
https://spring.io/guides/gs/convert-jar-to-war/
第二步:取決于你的服務(wù)器哈踱。
如果是在云服務(wù)器如ECS建議使用
nohup java -jar qcl80.jar --server.port=80 &
其他資料:
將Spring boot文件部署到阿里云上
springboot部署到阿里云,配置https梨熙,springboot項(xiàng)目同時(shí)支持http和https請(qǐng)求开镣,阿里云配置https --極力推薦
問(wèn)題二十:RequestMapping 和 GetMapping 的不同之處在哪里?
RequestMapping 具有類(lèi)屬性的咽扇,可以進(jìn)行 GET,POST,PUT 或者其它的注釋中具有的請(qǐng)求方法邪财。
GetMapping 是 GET 請(qǐng)求方法中的一個(gè)特例。它只是 ResquestMapping 的一個(gè)延伸肌割,目的是為了提高清晰度卧蜓。
問(wèn)題二十一:為什么我們不建議在實(shí)際的應(yīng)用程序中使用 Spring Data Rest?
我們認(rèn)為 Spring Data Rest 很適合快速原型制造!在大型應(yīng)用程序中使用需要謹(jǐn)慎把敞。
通過(guò) Spring Data REST 你可以把你的數(shù)據(jù)實(shí)體作為 RESTful 服務(wù)直接發(fā)布弥奸。
當(dāng)你設(shè)計(jì) RESTful 服務(wù)器的時(shí)候,最佳實(shí)踐表明奋早,你的接口應(yīng)該考慮到兩件重要的事情:
你的模型范圍盛霎。
你的客戶赠橙。
通過(guò) With Spring Data REST,你不需要再考慮這兩個(gè)方面愤炸,只需要作為 TEST 服務(wù)發(fā)布實(shí)體期揪。
這就是為什么我們建議使用 Spring Data Rest 在快速原型構(gòu)造上面,或者作為項(xiàng)目的初始解決方法规个。對(duì)于完整演變項(xiàng)目來(lái)說(shuō)凤薛,這并不是一個(gè)好的注意。
其他資料
Spring Data REST 快速構(gòu)建 restful api 應(yīng)用,再也不用擔(dān)心加班了-csdn--優(yōu)秀例子
問(wèn)題二十二:在 Spring Initializer 中诞仓,如何改變一個(gè)項(xiàng)目的包名字缤苫?
好消息是你可以定制它。點(diǎn)擊鏈接“轉(zhuǎn)到完整版本”墅拭。你可以配置你想要修改的包名稱活玲!
問(wèn)題二十三:可以配置 application.propertierde 的完整的屬性列表在哪里可以找到?
這里是完整的指南:
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
其他資料:
SpringBoot配置application.propertierde 的完整的屬性列表--簡(jiǎn)書(shū)--中文說(shuō)明
問(wèn)題二十四:JPA 和 Hibernate 有哪些區(qū)別谍婉?
簡(jiǎn)而言之
JPA 是一個(gè)規(guī)范或者接口
Hibernate 是 JPA 的一個(gè)實(shí)現(xiàn)
當(dāng)我們使用 JPA 的時(shí)候舒憾,我們使用 javax.persistence 包中的注釋和接口時(shí),不需要使用 hibernate 的導(dǎo)入包穗熬。
我們建議使用 JPA 注釋镀迂,因?yàn)槲覀儧](méi)有將其綁定到 Hibernate 作為實(shí)現(xiàn)。后來(lái)(我知道 - 小于百分之一的機(jī)率)死陆,我們可以使用另一種 JPA 實(shí)現(xiàn)招拙。
其他資料
JPA + SpringData 操作數(shù)據(jù)庫(kù)原來(lái)可以這么簡(jiǎn)單 ---- 深入了解 JPA - 1--Eclipse
問(wèn)題二十五:業(yè)務(wù)邊界應(yīng)該從哪一層開(kāi)始?
我們建議在服務(wù)層管理業(yè)務(wù)措译。商業(yè)業(yè)務(wù)邏輯在商業(yè)層或者服務(wù)層别凤,與此同時(shí),你想要執(zhí)行的業(yè)務(wù)管理也在該層领虹。
問(wèn)題二十六:使用 Spring Boot 啟動(dòng)連接到內(nèi)存數(shù)據(jù)庫(kù) H2 的 JPA 應(yīng)用程序需要哪些依賴項(xiàng)规哪?
在 Spring Boot 項(xiàng)目中,當(dāng)你確保下面的依賴項(xiàng)都在類(lèi)路里面的時(shí)候塌衰,你可以加載 H2 控制臺(tái)诉稍。
web 啟動(dòng)器
h2 :內(nèi)存數(shù)據(jù)庫(kù),更多關(guān)于H2數(shù)據(jù)參考:http://www.h2database.com/html/tutorial.html
jpa 數(shù)據(jù)啟動(dòng)器
其它的依賴項(xiàng)在下面:
需要注意的一些地方:
一個(gè)內(nèi)部數(shù)據(jù)內(nèi)存只在應(yīng)用程序執(zhí)行期間存在最疆。這是學(xué)習(xí)框架的有效方式杯巨。
這不是你希望的真是世界應(yīng)用程序的方式。
在問(wèn)題“如何連接一個(gè)外部數(shù)據(jù)庫(kù)努酸?”中服爷,我們解釋了如何連接一個(gè)你所選擇的數(shù)據(jù)庫(kù)。
其他資料
Spring Data JPA(二):SpringBoot集成H2--csdn
問(wèn)題二十七:如何不通過(guò)任何配置來(lái)選擇 Hibernate 作為 JPA 的默認(rèn)實(shí)現(xiàn)?
因?yàn)?Spring Boot 是自動(dòng)配置的仍源。
下面是我們添加的依賴項(xiàng):
spring-boot-stater-data-jpa 對(duì)于 Hibernate 和 JPA 有過(guò)渡依賴性心褐。
當(dāng) Spring Boot 在類(lèi)路徑中檢測(cè)到 Hibernate 中,將會(huì)自動(dòng)配置它為默認(rèn)的 JPA 實(shí)現(xiàn)笼踩。
問(wèn)題二十八:指定的數(shù)據(jù)庫(kù)連接信息在哪里逗爹?它是如何知道自動(dòng)連接至 H2 的?
這就是 Spring Boot 自動(dòng)配置的魔力嚎于。
來(lái)自:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-auto-configuration.html
Spring Boot auto-configuration 試圖自動(dòng)配置你已經(jīng)添加的基于 jar 依賴項(xiàng)的 Spring 應(yīng)用程序掘而。比如說(shuō),如果 HSQLDBis 存在你的類(lèi)路徑中匾旭,并且镣屹,數(shù)據(jù)庫(kù)連接 bean 還沒(méi)有手動(dòng)配置圃郊,那么我們可以自動(dòng)配置一個(gè)內(nèi)存數(shù)據(jù)庫(kù)价涝。
進(jìn)一步的閱讀:
http://www.springboottutorial.com/spring-boot-auto-configuration
問(wèn)題二十九:我們?nèi)绾芜B接一個(gè)像 MySQL 或者Orcale 一樣的外部數(shù)據(jù)庫(kù)?
讓我們以 MySQL 為例來(lái)思考這個(gè)問(wèn)題:
第一步 - 把 mysql 連接器的依賴項(xiàng)添加至 pom.xml
第二步 - 從 pom.xml 中移除 H2 的依賴項(xiàng)
或者至少把它作為測(cè)試的范圍持舆。
第三步 - 安裝你的 MySQL 數(shù)據(jù)庫(kù)
更多的來(lái)看看這里 -https://github.com/in28minutes/jpa-with-hibernate#installing-and-setting-up-mysql
第四步 - 配置你的 MySQL 數(shù)據(jù)庫(kù)連接
配置 application.properties
spring.jpa.hibernate.ddl-auto=none spring.datasource.url=jdbc:mysql://localhost:3306/todo_examplespring.datasource.username=todouser spring.datasource.password=YOUR_PASSWORD
第五步 - 重新啟動(dòng)色瘩,你就準(zhǔn)備好了!
就是這么簡(jiǎn)單逸寓!
問(wèn)題三十:Spring Boot 配置的默認(rèn) H2 數(shù)據(jù)庫(kù)的名字是什么居兆?為什么默認(rèn)的數(shù)據(jù)庫(kù)名字是 testdb?
在 application.properties 里面竹伸,列出了所有的默認(rèn)值
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
找到下面的屬性
Name of the datasource.
spring.datasource.name=testdb
如果你使用了 H2 內(nèi)部存儲(chǔ)數(shù)據(jù)庫(kù)泥栖,它里面確定了 Spring Boot 用來(lái)安裝你的 H2 數(shù)據(jù)庫(kù)的名字。
問(wèn)題三十一:如果 H2 不在類(lèi)路徑里面勋篓,會(huì)出現(xiàn)上面情況吧享?
將會(huì)報(bào)下面的錯(cuò)誤
Cannot determine embedded database driver class for database type NONE
把 H2 添加至 pom.xml 中,然后重啟你的服務(wù)器
問(wèn)題三十二:
你能否舉一個(gè)以 ReadOnly 為事務(wù)管理的例子譬嚣?
當(dāng)你從數(shù)據(jù)庫(kù)讀取內(nèi)容的時(shí)候钢颂,你想把事物中的用戶描述或者是其它描述設(shè)置為只讀模式,以便于 Hebernate 不需要再次檢查實(shí)體的變化拜银。這是非常高效的殊鞭。
問(wèn)題三十三:發(fā)布 Spring Boot 用戶應(yīng)用程序自定義配置的最好方法是什么?
@Value 的問(wèn)題在于尼桶,您可以通過(guò)應(yīng)用程序分配你配置值操灿。更好的操作是采取集中的方法。
你可以使用 @ConfigurationProperties 定義一個(gè)配置組件泵督。
你可以在 application.properties 中配置參數(shù)趾盐。
basic.value: true
basic.message: Dynamic Message
basic.number: 100
問(wèn)題三十四:配置文件的需求是什么?區(qū)分開(kāi)放環(huán)境、測(cè)試環(huán)境谤碳、生成環(huán)境
企業(yè)應(yīng)用程序的開(kāi)發(fā)是復(fù)雜的溃卡,你需要混合的環(huán)境:
Dev
QA
Stage
Production
在每個(gè)環(huán)境中,你想要不同的應(yīng)用程序配置蜒简。
配置文件有助于在不同的環(huán)境中進(jìn)行不同的應(yīng)用程序配置匈仗。
Spring 和 Spring Boot 提供了你可以制定的功能。
不同配置文件中踊兜,不同環(huán)境的配置是什么试浙?
為一個(gè)制定的環(huán)境設(shè)置活動(dòng)的配置文件。
Spring Boot 將會(huì)根據(jù)特定環(huán)境中設(shè)置的活動(dòng)配置文件來(lái)選擇應(yīng)用程序的配置卷仑。
其他資料
Spring Boot配置文件詳解
Spring Boot項(xiàng)目在多環(huán)境(開(kāi)發(fā)峻村、生產(chǎn)或測(cè)試環(huán)境)調(diào)用不同配置文件方式-csdn
問(wèn)題三十五:如何使用配置文件通過(guò) Spring Boot 配置特定環(huán)境的配置?
配置文件不是設(shè)別環(huán)境的關(guān)鍵锡凝。
在下面的例子中粘昨,我們將會(huì)用到兩個(gè)配置文件
dev
prod
缺省的應(yīng)用程序配置在 application.properties 中。讓我們來(lái)看下面的例子:
application.properties
basic.value= true
basic.message= Dynamic Message
basic.number= 100
我們想要為 dev 文件自定義 application.properties 屬性窜锯。我們需要?jiǎng)?chuàng)建一個(gè)名為 application-dev.properties 的文件张肾,并且重寫(xiě)我們想要自定義的屬性。
application-dev.properties
basic.message: Dynamic Message in DEV
一旦你特定配置了配置文件锚扎,你需要在環(huán)境中設(shè)定一個(gè)活動(dòng)的配置文件吞瞪。
有多種方法可以做到這一點(diǎn):
在 VM 參數(shù)中使用 Dspring.profiles.active=prod
在 application.properties 中使用 spring.profiles.active=prod
問(wèn)題三十六:# download a file from Spring boot rest service
@RequestMapping(path = "/download", method = RequestMethod.GET)
public ResponseEntity<Resource> download(String param) throws IOException {
// ...
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(resource);
}