Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。css
(1)建立項目,選擇Spring starter Project(需先在Eclipse安裝Spring Tool Suite),按Next: html
(2)填寫跟項目相關的各類信息,而後Next: java
(3)選擇須要的Dependency,而後Next:
(4)最後」Finish」,就開始下載jar包了,這個過程須要的時間比較長。nginx
如上圖所示,Spring Boot的基礎結構共三個文件:web
另外,spingboot建議的目錄結果以下:
root package結構:com.example.myprojectspring
com
+- example
+- myproject
+- Application.java
| +- domain | +- Customer.java
| +- CustomerRepository.java |
+- service
| +- CustomerService.java |
+- controller
| +- CustomerController.java |複製代碼
一、Application.java 建議放到根目錄下面,主要用於作一些框架配置
二、domain目錄主要用於實體(Entity)與數據訪問層(Repository)
三、service 層主要是業務類代碼
四、controller 負責頁面訪問控制apache
pom.xml文件中默認有兩個模塊:json
spring-boot-starter :核心模塊,包括自動配置支持、日誌和YAML;api
spring-boot-starter-test :測試模塊,包括JUnit、Hamcrest、Mockito。瀏覽器
1,建立controller
package com.ailianshuo.helloword.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
}複製代碼
@RestController 的意思就是controller裏面的方法都以json格式輸出,不用再寫什麼jackjson配置的了
2,啓動controller準備
按上面的代碼還不能啓動單個controller,須要添加下面代碼才能夠:
(1)@EnableAutoConfiguration :做用在於讓 Spring Boot 根據應用所聲明的依賴來對 Spring 框架進行自動配置,這就減小了開發人員的工做量。(也可使用@SpringBootApplication 等價於以默認屬性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan)
(2)啓動程序:
public static void main(String[] args) throws Exception {
SpringApplication.run(**.class, args);
}
完整代碼以下:
@EnableAutoConfiguration
@RestController
public class HelloWorldController {
@RequestMapping("/hello")
public String hello() {
return "Hello World";
}
public static void main(String[] args) {
SpringApplication.run(HelloWorldController.class);
}
}複製代碼
3,啓動單個controller
(1)右鍵HelloWorldController中的main方法,Run As -> Spring Boot App,項目就能夠啓動了。
(2) 編譯器顯示以下內容,即爲啓動成功。
2017-08-19 11:12:49.814 INFO 4164 — [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-08-19 11:12:49.819 INFO 4164 — [ main] c.a.h.controller.HelloWorldController : Started HelloWorldController in 3.351 seconds (JVM running for 4.573)
(3)在瀏覽器訪問http://localhost:8080/hello ,就能夠看到效果了。
在此我向你們推薦一個架構學習交流羣。交流學習羣號:575745314 裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多
編輯pom.xml
[html] view plain copy
簡單解釋一下上面的配置
首先看看Spring-boot-start-web包的依賴
能夠看到 其實這個包就是一些 日誌包 還有內置Tomcat JSON包 SpringMVC/Web包 這也就差很少解釋了爲何直接跑起來了
其實這個就是能夠理解爲簡單封裝了一下Spring 使得咱們配置更加便捷。
spring-boot-devtools的引入,其依賴包的學習
這個包 包含一些Spring的核心包。。。
spring-boot-maven-plugin 最後還加入了 一個SpringBoot的Maven插件
開始寫代碼。。。
Springboot2Application.java
[java] view plain copy
User.java
[java] view plain copy
UserControoler.java
[java] view plain copy
運行項目:
直接運行main方法或者使用maven命令: spring-boot:run
上面就是運行的結果。。
解釋
@RestController註解:看看源碼 其實就是 又封裝了一層 將@Controller和@RsponseBody兩個註解合在一塊兒
這樣一來應該對SpringBoot 也有了初步的認識。。。而且會簡單的使用
在實際項目中,咱們通常會放置一些配置文件,這些配置文件是區分環境的,通常環境有dev,test,prep,prod,分別對應開發,測試,預發佈,生產。那麼在spring boot項目中如何實現不一樣環境,使用不一樣的配置文件呢。
第一步:定義好不一樣環境的application.properties
application.properties 存放公用的一些配置。
以及最重要的配置 spring.profiles.active=@profiles.active@
application-dev.properties 對應開發環境
application-test.properties 對應測試環境
application-prep.properties 對應預生產環境
application-prod.properties 對應生產環境
第二步:pom中定義profile
第三步:maven命令打包
package -Dmaven.test.skip=true -Pdev
那麼此時就會將application-dev.properties 和application.properties 的配置都打入包中了。
在此我向你們推薦一個架構學習交流羣。交流學習羣號:575745314 裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多
Actuator插件是SpringBoot原生提供的一個服務,能夠經過暴露端點路由,用來輸出應用中的諸多 端點信息。實戰一下!
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>複製代碼
啓動Spring Boot應用程序以後,只要在瀏覽器中輸入端點信息就能得到應用的一些狀態信息。
經常使用端點列舉以下,能夠一個個詳細試一下:
固然此時只能使用/health
和 /info
端點,其餘由於權限問題沒法訪問。想訪問指定端點的話能夠在yml配置中添加相關的配置項,好比/metrics
端點則須要配置:
endpoints:
metrics:
sensitive: false複製代碼
此時瀏覽器訪問/metrics端點就能獲得諸以下面所示的信息:
固然也能夠開啓所有端點權限,只需以下配置便可:
endpoints:
sensitive: false複製代碼
於Actuator插件提供的監控能力畢竟有限,並且UI比較簡陋,所以須要一個更加成熟一點的工具
SBA則是基於Actuator更加進化了一步,其是一個針對Actuator接口進行UI美化封裝的監控工具。咱們來實驗一下。
pom.xml中加入以下依賴:
而後在應用主類上經過加註解來啓用Spring Boot Admin
啓動程序,瀏覽器打開 localhost:8081
查看Spring Boot Admin主頁面:
此時Application一欄空空如也,等待待監控的應用加入
pom.xml中加入如下依賴
而後在yml配置中添加以下配置,將應用註冊到Admin服務端去:
Client應用一啓動,Admin服務立馬推送來了消息,告訴你AdminTest上線了:
此時去Admin主界面上查看,發現Client應用確實已經註冊上來了:
點擊最上方JOURNAL,會看到被監控應用程序的事件變化:
圖中能夠清晰地看到,應用從 REGISTRATION → UNKNOWN → UP 的狀態跳轉。
這樣就將Actuator插件提供的全部端點信息在SBA中所有嘗試了一遍。
在此我向你們推薦一個架構學習交流羣。交流學習羣號:575745314 裏面會分享一些資深架構師錄製的視頻錄像:有Spring,MyBatis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構等這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多
默認狀況下,Spring Boot的日誌是輸出到控制檯的,不寫入任何日誌文件。
要讓Spring Boot輸出日誌文件,最簡單的方式是在application.properties配置文件中配置logging.path鍵值,以下:(日誌文件爲spring.log)
logging.path=/var/log
複製代碼
二種方法是在application.properties配置文件中配置logging.file鍵值,以下:
logging.file=/var/log/myapp.log
複製代碼
兩種配置方法適用於開發階段,對於部署則存在必定的問題。好比部署到不一樣的環境,可能就存在須要修改application.properties文件的狀況,這就意味着須要從新打包,再次部署,顯得不便捷。
有鑑於此,Spring Boot提供了一種覆寫application.properties配置文件中鍵值的方法,在命令行經過指定參數來實現覆寫——在運行時把命令行參數看成標準的系統屬性,以下:
java -jar -Dlogging.path=/tmp myapp.jar
複製代碼
後,還能夠在命令行調用Spring Boot的Maven插件時覆寫這個值。可是,直接使用系統屬性對於插件方式是無效的。須要使用run.jvmArguments參數來指定系統屬性,設置想要的值:
mvn spring-boot:run -Drun.jvmArguments="-Dlogging.path=/tmp"複製代碼