Spring Boot應用總結更新
SpringBoot的產生背景:
SpringBoot的產生背景伴隨著微服務,微服務的相關概念參考上一篇的博客,分布式架構理論;
微服務的宏觀概念理解:
將一個大應用拆分成多個小應用,一個小應用是一個小型的服務,可以通過協議進行互通;
每個小應用是一個可獨立替換和獨立升級的服務;
下面看SpringBoot的優點:
SpringBoot構建應用構建的分布式簡單框架:
Srping Boot第一個Web應用:HelloWorld遇到的問題總結;
使用的編輯工具: Intellij Idea;
項目管理工具Maven:maven的安裝和配置以及原理性總結,請參考下一篇文章;
工程結構:
項目遇到的問題:
在我們配置controller層的時候,使用@Controller註解的時候,如下:
使用瀏覽器進行Request請求的時候,會遇到下面的問題:
問題出現在:
沒有使用模版。即@Controller 用來響應頁面,@Controller必須配合模版來使用。spring-boot 支持多種模版引擎包括:
1 FreeMarker
2 Groovy
3 Thymeleaf (Spring 官網使用這個)
4 Velocity
5 JSP (貌似Spring Boot官方不推薦,STS創建的項目會在src/main/resources 下有個templates 目錄,這裏就是讓我們放模版文件的,然後並沒有生成諸如 SpringMVC 中的webapp目錄)
本文以Thymeleaf為例介紹使用模版,具體步驟如下:
在pom.xml文件中添加如下模塊依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
因此,我們就直接使用@RestController註解來處理http請求來,這樣簡單的多。
@RestController
Spring4之後新加入的註解,原來返回json需要@ResponseBody和@Controller配合。
即@RestController是@ResponseBody和@Controller的組合註解。
@RestController public class HelloController { @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(){ return "hello"; } }
配置文件:
1、application.properties
2、application.yml
YAML的語法:
K:空格v kv鍵值對 註意不要漏掉空格
以空格的縮進表示層級關系;只要左對齊的一列數據則表示同一個層級;
eg:
serve:
port: 8080
path: hello
字面量(數字,字符串,布爾)
字符串默認不需要加上單引號或者雙引號 eg: port: 8080
如果加上雙引號則不會轉義字符串中的特殊字符
如果加上單引號則會進行特殊字符進行轉義;
對象,Map鍵值對
在下一行寫對象的屬性和值的關系,需要註意縮進
eg:
friends:
lastName: zhangsan
age: 20
另一種寫法:
friends: {lastName: zhangsan, age: 20}
數組(List, Set):
用 -空格 表示數組中的一個元素:
eg:
pets:
- cat
- dog
行內寫法:
pets: [cat, dog]
代碼舉例:
在Person類上加上ConfigurationProperties 註解;與配置文件信息進行綁定
使用properties的方式:
Spring Boot應用總結更新