SpringBoot-尚硅谷筆記
一、hello world
目的:簡化spring開發
技術棧:spring全家桶
J2EE一站式解決方案
優點:
- 與主流框架集成
- 嵌入tomcat,直接生成jar包
- starters啓動器,自動配置依賴和版本管理
- 無需xml,開箱即用
- 提供準生產環境的應用監控
- 與雲計算集成
發展過程:
- 單體應用:所有的都寫在一個應用裏,牽一髮動全身
- 微服務:獨立功能元素,動態組合,節省資源,服務耦合降低
課程學習:穀粒學院、博學谷
知識前提:
- Spring框架掌握
- Maven掌握
- IDEA掌握
環境約束:
- jdk1.8
- maven3.x
- IDEA2017以上
- springboot 1.5.9 release
配置
maven添加配置
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<maven.compiler.encoding>utf-8</maven.compiler.encoding>
</properties>
</profile>
IDEA配置
配置默認maven爲指定maven
hello world
需求:瀏覽器發送hello請求,服務器返回處理結果
1.創建普通maven工程,無骨架
2.添加maven依賴
包括父工程依賴和springweb依賴,此處打包爲jar
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<!-- Add typical dependencies for a web application -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- Package as an executable jar -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.編寫主程序
要掌握的註解:
@SpringBootApplication
。標誌這是一個Springboot的應用,此時註解在主函數類外
main方法中:
SpringApplication.run(main類字節碼文件,args)
4.編寫controller文件
要掌握的註解:
@Controller
。表示這個類爲控制類,映射請求
要掌握的註解:
@RequestMapping
。表示這個方法所映射的請求
要掌握的註解:
@ResponseBody
。表示這個方法會返回一個值給response
細代碼可以參考springboot環境配置日誌
5.看效果
可以直接工程中點擊運行查看,然後去瀏覽器訪問查看效果,也可以maven package打包成jar,然後:
java -jar xxx
然後瀏覽器訪問即可
細節一二
- RESTAPI解釋
服務器請求,處理後不是跳轉頁面,而是返回內容
如果某個controller類的所有mapping方法都是返回一個內容(字符串或者json),那麼可以將@ResponseBody
加到類上面。
要掌握的註解:
@RestController
。這個爲:@ResponseBody
+@Controller
使用spring initializer快速生成springboot項目
生成項目的目錄結構:
- 主程序已經生成好
- resources文件夾:
- static:保存靜態資源:js css images
- templates:存放模板引擎,默認jar包使用嵌入式tomcat,不支持jsp頁面
- application.properties:springboot應用配置文件,用來改變默認配置
二、springboot配置
配置文件
- applicatin.properties
- application.yml
用來改變springboot默認配置,路徑:src/main/resource
或者類路徑/config
yml配置實例:
server:
port: 8081
yml語法
基本語法
key: value
注意:key和value之間嚴格【空格】約定!同一縮進下的kv屬於同一層級
不能是tab,只能是空格
注意事項:
- 屬性值中單引號中可以轉義,雙引號不會轉移,字符串默認不用加引號
- 對象表示可以用行內寫法:friends: {lastname: ddd,age: 18}
- 數組使用
橫槓空格
表示元素#普通寫法 pets: - cat - dog - pig #行內寫法 pets: [cat,dog,pig]
配置文件注入javabean
配置文件內容:
person:
name: abc
age: 18
dog:
name: gaga
age: 2
lists:
- abc
- gaga
其中,person下的第一個層級都與javabean中的屬性一一對應。
在Person類中,需要加上註解:@Component
和@ConfigurationProperties(prefix="person")
要掌握的註解:
@ConfigurationProperties(prefix="person")
。用於將配置文件內的對應屬性映射到javabean上,其中prefix表示選定的配置文件字段,默認從全局配置文件中獲取值
要掌握的註解:
@PropertySource(...)
。用於指定配置文件路徑,可以指定多個,當需要獲取其他文件裏的配置需要加該註解
要掌握的註解::
@Component
。該註解將當前類加入容器管理,標識爲spring的組件,這樣才能使用第六個註解的功能
注意事項:
- 使用上面的註解後會提示導入配置文件註解處理器包:
<!--導入配置文件處理器後,配置文件中寫綁定信息會有提示-->
驗證注入情況
採用spring的測試類來查看注入情況
在test-java-包下有個測試類,包含兩個註解:@RunWith(SpringRunner.class)
和@SpringBootTest
,在測試類中寫上Person person;
並註解:@Autowired
,然後定義一個方法輸出該字段,並給該方法註解@Test
要掌握的註解:
@RunWith(SpringRunner.class)
。表示當前測試類使用的測試驅動器爲springrunner,當然也可以指定爲junit等
要掌握的註解:
@SpringBootTest
。表示當前類爲springboot的測試類
要掌握的註解:
@Autowired
。表示當前類字段自動從spring容器中注入匹配的javabean
要掌握的註解:
@Test
。表示當前方法爲需要測試的方法,必須註解在測試類中
properties語法
直接看:
#由於idea默認properties使用utf-8編碼,
#而程序運行時默認採用ascii編碼,
#所以輸出中文會亂碼,在idea的file encoding中設置運行時轉碼爲ascii
person.last-name=abc
person.age=18
person.dog.name=gaga
person.dog.age=1
person.maps.k1=v1
person.map.k2=v2
要掌握的註解:
@Value("${person.last-name})
。該註解放在javabean類中的屬性上,表示從spring容器中取出哪個值注入到當前屬性中,value中也支持el表達式:@Value("#{11*2})
會將22注入
注意:@ConfigurationProperties和@Value
- 鬆散綁定:
只用configurationproperties支持鬆散綁定
- spel語法:只有Value支持,畢竟另一個是統一注入的
- jsr303校驗:ConfigurationProperties支持,如類上加:
@Validated
,字段上加:@Email
,則當前字段必須爲郵箱格式,Value不支持 - Value註解在複雜類型封裝時不支持,只能注入基本數據類型