今天在慕課網中看見了Spring Boot這麼一個教程,這個Spring Boot做爲JavaWeb的學習者確定至少會聽過,但我是不知道他是什麼玩意。html
只是大概瞭解過他是用起來很方便,不用什麼配置的。因而我就花了點時間去跟着學習了。前端
視頻地址:http://www.imooc.com/learn/767java
教程中的代碼:https://gitee.com/liaoshixiong/girlgit
在教程中,啓動SpirngBoot有三種方式:github
使用SpringBoot做爲咱們的框架,連Tomcat都不用本身配置。Tomcat默認的端口是8080。那若是咱們要改端口的話,怎麼改呢??項目中可能有一些屬性變量,那怎麼配置呢???web
SpringBoot是提供了application.properties這種配置文件供咱們使用的。spring
可是,咱們能夠有更好的配置方式,使用yml文件,這種配置文件使用起來就更加簡潔了。數據庫
在yml文件中配置屬性,那麼咱們在Controller中可使用@value
屬性來進行獲取。瀏覽器
若是咱們的配置屬性是有規律的(是分類的),好比爲System系統配置的屬性,咱們能夠建立一個Java類來進行管理。tomcat
那麼在獲取的時候就不須要使用@value
屬性來分別獲取了。直接獲取Java類的成員變量就好了。
固然了,這裏涉及到了兩個註解:
@configurationProperties
@Component
再舉個例子,咱們的生產環境和開發環境的配置變量頗有多是不同的,好比:咱們的path變量在開發環境中是:http://localhost:8080
。而咱們的生產環境中的path路徑是:zhognfucheng.site
。這就形成了差別,在springBoot中,這種差別就很好解決了。
SpringBoot已經不推薦使用JSP了,推薦使用模版來返回頁面。thymeleaf這個模版,若是在返回頁面的時候出錯了,看看是否是沒有使用模版。
@RestController = @Controller + @ResponseBody
統一處理異常我在Struts二、springMVC的時候都已經接觸過了,方法都是相似的。定義一個本身系統的異常,爲了更好地排查出錯誤所在。
而這個課程的統一處理異常我又學到了很多的東西:
SpringBoot環境下使用AOP,也是須要導入maven座標的。知識點都和spring學習的差很少...
使用日誌記錄可使用sl4jlog,這個是Spring自帶的。
在返回給瀏覽器前記錄返回的數據:
SpringData JPA直接卻是聽過,可是沒了解過。課程說它就是一個標準,可以方便咱們對數據庫的CURD。
也去網上看了些資料,它的默認實現是Hibernate,所以,使用JPA,就至關於使用Hibernate了。
我認爲它實際上就是封裝了Hibernate的API,另Hibernate的開發又更加簡單了。
建立一個接口,實現JPA所給出的接口,那麼咱們本身建立的接口就有了JPA也就是Hibernate的API了。
課程中使用的是RESTful風格的API實現增刪改查:
視頻做者使用的是POSTMAN軟件來進行對http請求的測試的,在評論留言說IDEA也有這樣的功能:
idea 有個 rest client 能夠代替postman Tools -> Test RESTful web service
我也順利找到了..
既然是使用了RESTful的風格,那麼在Controller了就可使用GetMapping、PutMapping、DeleteMapping這樣的註解了。
在service層作單元測試的和我以前學過的單元測試是同樣的,就是autowired一個service對象而後就測試方法就好了。
而測試Controller、在教程中也稱之爲測試API,這就是我第一次接觸了。測試API其實就是模擬使用HTTP來進行測試。
使用到了MOCK這麼一個對象來幫咱們進行測試:
還有要注意的是:若是使用mvn來進行打包的話,那麼打包的時候會自動幫咱們進行單元測試的。所以,咱們有的時候不想他打包的時候進行單元測試,就須要寫如下的參數了:
在學習完上面SpringBoot之後,我以爲並不過癮、隨後又發現了一個課程:http://www.imooc.com/learn/915
在標題上寫着的是SpringBoot和熱部署。因而我又進去學習了。
好的,回到熱部署和熱加載。------
熱部署和熱加載這兩個名詞其實我剛開始是搞不清的,不過這兩個名詞我都是聽過的。由於我在Idea中使用了JRebel這個插件了,瞭解了大概的。
熱部署表明的是:咱們不須要重啓服務器,可以將新war包替換舊的war包。
熱加載表明的是:咱們不須要重啓服務器,就可以類檢測獲得,從新生成類的字節碼文件
不管是熱部署或者是熱加載、都是基於Java類加載器來完成的。
Java文件被編譯成字節碼文件、classloader將字節碼文件放在JVM上運行。
驗證階段:字節碼文件不會對JVM形成危害
準備階段:是會賦初始值,並非程序中的值。好比:int=0
解析階段:符號引用變成直接引用
初始化階段:初始化程序的值、有5個狀況會致使執行初始化時機:new、reflect、先初始化父類再初始化子類、main方法、JDK1.7動態語言 ref_
final修飾的並不會觸發,由於他會放在常量池中。
在裏邊還有使用java代碼的時候來實現熱加載的,我就沒有去敲了。用到再回過去吧。!
tomcat 可使用3種方式實現熱部署:
直接啓動tomcat後再把項目放進webapp
修改servlet.xml中,context標籤中加入屬性實現
經過自定義xml文件,放在localhost文件下面。我以爲就是第二點的延伸
springBoot熱部署3種方式: 一、在plugin標籤中加入插件 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.6.RELEASE</version> </dependency> </dependencies> 進入pom文件的目錄輸入 mvn spring-boot:run啓動 二、啓動的加入參數 引用springloaded jar包 -javaagent:'jar包路徑' -noverify 三、pom文件加入依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2018年1月2日15:02:13
最後根據下面這篇博文來使用SpringBoot熱部署:http://blog.csdn.net/u013938484/article/details/77541050
值得注意的是:在IDEA下不是自動編譯的,所以是須要按Ctrl+F9才能實現!
後來我使用了SpringBoot搭建了一個簡單的項目,從中也遇到了很多的問題和相關的沒有接觸到的知識點。下面我會給出當時搜索到的資料和遇到的問題以及解決方案
https://github.com/leechenxiang/imooc-springboot-starter
SpringBoot能使咱們簡化繁瑣的配置,簡化Maven包的依賴(缺點:同時加入一些咱們不須要的包)。整體來看的是一個很是好用的框架(集成了不少有用的功能,與其餘框架整合十分方便),學習成本很低(若是學過SpringMVC,分分鐘就上手),很是合適用來搭建環境。
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同窗,能夠關注微信公衆號:Java3y