時(shí)間:2022-08-11 16:15:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2022-08-11 16:15:01 來源:網(wǎng)站運(yùn)營
JdbcTemplate
、JmsTemplate
以及BeanFactory
生命周期、了解Servlet
監(jiān)聽器,你以為掌握了這些就可以開始開發(fā)了嗎?實(shí)際上問題遠(yuǎn)沒有結(jié)束,如果你要用Spring MVC編寫一個(gè)簡單的hello world
,你還需要了解DispatcherServlet
和一堆Model-View-Controller
相關(guān)的類型。jar
包。這意味著Spring Boot將所有的依賴和應(yīng)用程序代碼都包裝到一個(gè)自包含的jar
中,而這些jar包運(yùn)行在一個(gè)平面的類加載器中。簡單的類加載體系使得開發(fā)人員更容易理解應(yīng)用程序的啟動(dòng)、依賴關(guān)系和日志輸出,但更重要的是,它有助于減少應(yīng)用從構(gòu)建到生產(chǎn)環(huán)境的步驟數(shù)量。這意味著開發(fā)人員不必將打包好的應(yīng)用放置到應(yīng)用服務(wù)器中,而是直接運(yùn)行這個(gè)standalone的應(yīng)用,如果你需要servlet
,那么完全可以將其打包在應(yīng)用內(nèi),使其為你服務(wù)。java -jar <name.jar>
就可以啟動(dòng)你的應(yīng)用了!Spring Boot、Dropwizard和WildFly Swarm都遵循將所有內(nèi)容打包成可執(zhí)行的jar
模式。但是傳統(tǒng)的應(yīng)用服務(wù)器包含的管理能力,怎么在這種模式下實(shí)現(xiàn)呢?actuator
的模塊,它可以實(shí)現(xiàn)應(yīng)用的指標(biāo)統(tǒng)計(jì)。例如:我們可以收集日志、查看指標(biāo)、生成執(zhí)行線程dump、顯示環(huán)境變量、了解gc以及顯示BeanFactory中配置的bean??梢酝ㄟ^HTTP
或者JMX
暴露這些信息或者進(jìn)行日志輸出。借助Spring Boot,我們可以利用Spring框架的功能、減少配置并快速開發(fā)應(yīng)用并上線。Spring Boot CLI 的安裝方式,可以參考 這里一旦你安裝了Spring Boot CLI,你可以這樣檢查一下。
Homebrew下:brew tap pivotal/tap
brew install springboot
spring init --build maven --groupId com.murdock.examples --version 1.0 --java-version 1.8 --dependencies web --name hola-springboot hola-springboot
在microservices-camp下運(yùn)行。運(yùn)行該命令后,將會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)
hola-springboot
目錄,同時(shí)該目錄下包含了一個(gè)完整的Spring Boot程序,簡單的介紹一下這個(gè)命令中包含的內(nèi)容。jpa
、security
和cassandra
hola-springboot
目錄中, 執(zhí)行命令:mvn spring-boot:run
,如果程序啟動(dòng),沒有報(bào)錯(cuò),你就能看到如下的日志:http://localhost:8080
,你會(huì)看到如下內(nèi)容后續(xù)實(shí)踐內(nèi)容與原文有不同,在操作性上要比原文具備更好的實(shí)踐性。
api/holaV1
HTTP/REST端點(diǎn),訪問它將返回 Hola Spring Boot @ X,而其中的 X 是運(yùn)行應(yīng)用的本機(jī)IP。hola-springboot
導(dǎo)入到IDE中,在com.murdock.examples.holaspringboot
包下面建立一個(gè)類,名稱為HolaRestControllerV1
。hola()
返回了我們需要的內(nèi)容,一個(gè)簡單的字符串。HolaRestControllerV1
的POJO
,你可以寫一些單元測試去做驗(yàn)證,而讓它暴露HTTP端點(diǎn),則需要增加一些內(nèi)容。@RequestMapping("/api")
代表著HolaRestControllerV1
接受來自/api
路徑的請求,當(dāng)添加@RequestMapping(method = RequestMethod.GET, value = "/holaV1", produces = "text/plain")
時(shí),表示告知Spring在/holaV1(其實(shí)是/api/holaV1)暴露HTTP GET端點(diǎn),該端點(diǎn)接受的類型是text/plain
。Spring Boot將會(huì)使用內(nèi)置的Tomcat
運(yùn)行,當(dāng)然你也可以切換到Jetty
或者Undertow
。hola-springboot
目錄下,執(zhí)行mvn clean package spring-boot:run
,然后使用瀏覽器訪問http://localhost:8080/api/holaV1
,如果一切正常,我們可以看到如下內(nèi)容。helloapp.*
屬性綁定到HolaRestController
,可以在類型上聲明@ConfigurationProperties(prefix="helloapp")
,Spring Boot會(huì)自動(dòng)嘗試將比如helloapp.foo
或者helloapp.bar
等這些屬性值綁定到類型實(shí)例的foo
、bar
等字段上。application.properties
,我們就可以在這個(gè)文件中定義新屬性,比如:helloapp.saying
。HolaRestControllerV2
。hola-springboot
目錄下,繼續(xù)使用mvn clean package spring-boot:run
來編譯工程,運(yùn)行這個(gè)應(yīng)用,然后使用瀏覽器訪問http://localhost:8080/api/holaV2
,你會(huì)看到如下內(nèi)容。actuator
來完成這個(gè)工作。actuator
,啟用的過程非常簡單。在hola-springboot/pom.xml
中依賴:hola-springboot/src/main/resources/application.properties
中增加一個(gè)配置(安全原因):hola-springboot
下運(yùn)行:mvn clean package spring-boot:run
重新編譯工程,啟動(dòng)項(xiàng)目。http://localhost:8080/api/holaV1
以及http://localhost:8080/api/holaV2
,然后訪問一下:http://localhost:8080/metrics
,可以看到如下內(nèi)容。hola-springboot
下,運(yùn)行mvn clean package
,然后可以通過java -jar
來運(yùn)行。Dropwizard
和WildFly Swarm
都使用類似的方式進(jìn)行。在第五章中,將會(huì)討論服務(wù)的柔性、適應(yīng)性交互和調(diào)用接下來將擴(kuò)展
hola-springboot
項(xiàng)目,完成服務(wù)的調(diào)用,但在此之前,我們先要搭建一個(gè)后臺(tái)服務(wù),完成類似下圖的交互。后臺(tái)服務(wù)的構(gòu)建,將采用forge + WildFly的方式進(jìn)行,比原文中寫一個(gè)Servlet部署到Jetty顯得更好通過以下方式,可以在
關(guān)于forge的安裝,在mac下:brew install jboss-forge
microservices-camp
下創(chuàng)建一個(gè)具備持久化能力的REST服務(wù),它可以自由的部署到WildFly
中。forge
構(gòu)建完成之后,可以將其導(dǎo)入到IDE中,如果觀察BookEndpoint
這個(gè)類型,你會(huì)發(fā)現(xiàn)涉及到CRUD
以及分頁查詢等邏輯已經(jīng)完全具備了。hola-backend.war
的應(yīng)用,下面我們將其部署到WildFly
中。WildFly
的使用可以通過下載到本地運(yùn)行,但是由于涉及到兩個(gè)進(jìn)程的交互,本文采用Docker
的方式進(jìn)行部署,讀者可以自行準(zhǔn)備環(huán)境。筆者準(zhǔn)備了登錄到WildFly
鏡像,可以簡單的運(yùn)行起來
執(zhí)行:sudo docker run --name wildfly -it -p 9990:9990 -p 8080:8080 weipeng2k/wildfly-admin
,可以啟動(dòng)一個(gè)WildFly
,HTTP端口在8080,應(yīng)用管理端口在9990
管理員賬號(hào)筆者已經(jīng)構(gòu)建在鏡像中:admin/Admin#hello1234
WildFly
后臺(tái),通過管理界面,部署hola-backend.war
。WildFly
。下面使用chrome插件Postman
構(gòu)建Book
數(shù)據(jù),然后測試是否可用。hola-backend
工作正常,當(dāng)然可以通過WildFly
的管理界面查詢運(yùn)行時(shí)信息,這點(diǎn)和Spring Boot的actuator很像,但是產(chǎn)品化的體驗(yàn)做的更好些。hola-springboot
項(xiàng)目中新建BookRestController
,使用RestTemplate
來完成后端服務(wù)的交互。BookRestController
將后端的host與port放在了配置中,而前綴是books
,那么也就需要在application.properties
中增加這些配置。http://localhost:8080/api/books/1
,它將訪問hola-springboot
,而hola-springboot
將會(huì)調(diào)用hola-backend
,最終由hola-springboot
輸出結(jié)果。WAR
和EAR
不同的部署方式,以及如何使用外部資源來完成配置,并通過actuator暴露了Metrics,使用RestTemplate
調(diào)用了另一個(gè)服務(wù)。如果你想了解跟多內(nèi)容,可以參考下面的鏈接。關(guān)鍵詞:微服,使用,發(fā)指
客戶&案例
營銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。