溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

spring Roo怎么用

發(fā)布時(shí)間:2021-08-09 10:49:15 來源:億速云 閱讀:174 作者:小新 欄目:編程語言

這篇文章主要介紹了spring Roo怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

安裝

安裝命令行工具

Spring Roo是一套命令行工具,如果你使用的是Eclipse/STS,還可以使用Eclipse對(duì)應(yīng)的插件。

首先先來下載命令行工具。到下載頁(yè)面,選擇對(duì)應(yīng)版本下載。這里我選擇的是最新的2.0.0.RC1 ,畢竟我有更新強(qiáng)迫癥。下載完成之后解壓,會(huì)得到一個(gè)文件夾,其中bin目錄下就是Spring Roo的可執(zhí)行文件了??梢钥吹剿衎at和sh兩種格式,可以在不同系統(tǒng)上運(yùn)行。為了方便以后在終端窗口運(yùn)行,我建議同時(shí)將這個(gè)文件夾添加到環(huán)境變量中。

安裝好之后,打開命令提示符或者其他終端窗口,輸入roo命令,就可以啟動(dòng)Roo了。值得提一點(diǎn),Roo會(huì)在命令提示符對(duì)應(yīng)的文件夾位置創(chuàng)建項(xiàng)目,所以如果需要在特定位置創(chuàng)建項(xiàng)目,先在命令提示符中切換到該文件夾,然后再啟動(dòng)Roo。

spring Roo怎么用

安裝Eclipse插件

打開你的Eclipse/STS,然后遵循以下步驟:

點(diǎn)擊菜單欄 Help ? Install New Software
點(diǎn)擊 Available Software sites
點(diǎn)擊 Import 按鈕
找到 “$ROO_HOME/conf/sts-sites-bookmarks.xml” 并確定,這里$ROO_HOME是你安裝Roo的目錄
根據(jù)需要選擇對(duì)應(yīng)的版本
在過濾欄輸入roo
選中功能 Spring IDE Roo Support
然后一路確定并允許條款
最后重啟IDE即可

下面是官方文檔的圖,如果有疑問照著這張圖來就行了。

spring Roo怎么用

到這一步還沒完,插件是安裝好了,但是還沒有配置。其實(shí)要配置的也很簡(jiǎn)單,告訴插件你的Roo工具安裝到哪里就行了。點(diǎn)擊 Window ? Preferences ? Spring ? Roo Support ,打開設(shè)置,然后照著官方文檔截圖設(shè)置好你的工具路徑即可。

spring Roo怎么用

這樣插件就設(shè)置完畢了。其實(shí)這個(gè)插件也沒啥作用,就是在Eclipse中開了一個(gè)窗口,能運(yùn)行Roo命令,和直接在命令提示符中運(yùn)行其實(shí)是一樣的。

使用Roo

運(yùn)行Roo腳本

$ROO_HOME\samples文件夾下有三個(gè)示例項(xiàng)目腳本,使用Roo運(yùn)行它們可以快速創(chuàng)建相應(yīng)的項(xiàng)目。如果沒有耐心,可以直接從這里開始。

spring Roo怎么用

比如說,我要運(yùn)行clinic實(shí)例項(xiàng)目,就可以輸入以下命令:

roo> script --file clinic.roo

稍等片刻,程序就會(huì)創(chuàng)建完畢。

spring Roo怎么用

最后創(chuàng)建出的是一個(gè)基于Maven的Spring Boot程序。在IDEA下是這么一個(gè)樣子??梢钥吹巾?xiàng)目中有一個(gè)名字叫l(wèi)og.roo的日志文件,它記錄了這個(gè)Roo腳本執(zhí)行的內(nèi)容。另外不知道為什么程序在IDEA下會(huì)有一點(diǎn)報(bào)錯(cuò),不過不影響編譯和運(yùn)行。

spring Roo怎么用

這個(gè)PetClinic示例程序使用了Spring Security來保護(hù)頁(yè)面。我查閱了一下,Spring Boot下Spring Security默認(rèn)的用戶名是user,密碼則在程序啟動(dòng)的時(shí)候隨機(jī)輸出到控制臺(tái)中。最后運(yùn)行截圖如下,大家可以自己運(yùn)行和測(cè)試一下這個(gè)程序。

spring Roo怎么用

腳本解釋

下面來解釋一下PetClinic這個(gè)程序的Roo腳本,讓我們來看看Roo是如何工作的。這里只做一下簡(jiǎn)單解釋,如果需要詳細(xì)資料的話可以參考官方文檔的附錄,完整介紹了Roo的各種命令和參數(shù)以及用法。

首先是創(chuàng)建項(xiàng)目并指定頂級(jí)包名,這樣會(huì)創(chuàng)建一個(gè)基于Maven的Spring Boot項(xiàng)目。

project setup --topLevelPackage org.springframework.roo.petclinic

然后是指定JPA存儲(chǔ)類型,這里用的是Hibernate,數(shù)據(jù)庫(kù)是存儲(chǔ)在內(nèi)存的HSQLDB。當(dāng)然也可以使用其它數(shù)據(jù)庫(kù),不過相應(yīng)地需要增加用戶名等其他參數(shù)。

jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

然后是幾個(gè)枚舉類,將會(huì)在實(shí)體類中用到,這里的~指代前面設(shè)置的頂級(jí)包名。

enum type --class ~.domain.reference.PetType
enum constant --name DOG
enum constant --name CAT
enum constant --name BIRD

enum type --class ~.domain.reference.Specialty
enum constant --name CARDIOLOGY
enum constant --name DENTISTRY
enum constant --name NUTRITION

然后是項(xiàng)目中的幾個(gè)實(shí)體類。

entity jpa --class ~.domain.Pet --sequenceName PET_SEQ --entityFormatExpression "#{name} (#{type})"
entity jpa --class ~.domain.Visit --sequenceName VISIT_SEQ --entityFormatMessage visit_format
entity jpa --class ~.domain.AbstractPerson --abstract 
entity jpa --class ~.domain.Vet --extends ~.domain.AbstractPerson --entityFormatExpression "#{lastName} (#{specialty})"
entity jpa --class ~.domain.Owner --extends ~.domain.AbstractPerson --entityFormatExpression "#{lastName} (#{city})"

之后的叫本詳細(xì)設(shè)置了每個(gè)實(shí)體類的屬性以及對(duì)應(yīng)關(guān)系,由于比較多所以我只挑選了幾個(gè)典型的。在設(shè)置實(shí)體類之前,需要使用focus命令指定要設(shè)置的實(shí)體類。

focus --class ~.domain.Pet
field boolean --fieldName sendReminders --notNull --primitive
field string --fieldName name --notNull --sizeMin 1
field number --fieldName weight --type java.lang.Float --notNull --min 0
field enum --fieldName type --type ~.domain.reference.PetType --notNull
field set --fieldName visits --type ~.domain.Visit

focus --class ~.domain.AbstractPerson
field string --fieldName firstName --sizeMin 3 --sizeMax 30
field string --fieldName lastName --notNull --sizeMin 3 --sizeMax 30
field string --fieldName address --notNull --sizeMax 50 --sizeMin 1
field string --fieldName city --notNull --sizeMax 30
field string --fieldName telephone --notNull
field string --fieldName homePage --sizeMax 30
field string --fieldName email --sizeMax 30 --sizeMin 6
field date --fieldName birthDay --type java.util.Date --notNull

然后設(shè)置實(shí)體類之間的投影關(guān)系并設(shè)置JPA Repository。

entity projection --class ~.domain.VetInfo --entity ~.domain.Vet --fields id,firstName,lastName,specialty --entityFormatExpression "#{firstName} #{lastName}"
repository jpa --entity ~.domain.Vet --interface ~.repository.VetRepository --defaultReturnType ~.domain.VetInfo

repository jpa --all --package ~.repository
service --all --apiPackage ~.service.api --implPackage ~.service.impl

然后是設(shè)置DTO(數(shù)據(jù)傳輸對(duì)象),它和頁(yè)面中的表單等信息對(duì)應(yīng),然后在后臺(tái)轉(zhuǎn)換為相應(yīng)的實(shí)體類。在這里還可以指定finder,也就是查詢條件,查詢條件的規(guī)則請(qǐng)參考Spring Data JPA的相關(guān)內(nèi)容。

dto --class ~.domain.PetNameAndWeightFormBean
field string --fieldName name
field number --fieldName weight --type java.lang.Float
finder add --entity ~.domain.Pet --name findByNameAndWeight --formBean ~.domain.PetNameAndWeightFormBean

然后是設(shè)置Spring Web MVC,這里指定Thymeleaf作為視圖層,并為所有控制器生成JSON和Thymeleaf視圖。

web mvc setup
web mvc view setup --type THYMELEAF
web mvc controller --all --responseType JSON
web mvc controller --all --responseType THYMELEAF

然后是生成查詢和詳情頁(yè)面。這里針對(duì)前面設(shè)置的所有查詢條件生成相應(yīng)的查詢頁(yè)面,然后生成指定實(shí)體類的詳情頁(yè)面。最后指定了頁(yè)面語言,目前好像只支持英語和西班牙語。

// Publishing finders
web mvc finder --all --responseType THYMELEAF

// Adding details
web mvc detail --entity ~.domain.Owner --field pets --views list,show,findByCityLike --responseType THYMELEAF
web mvc detail --all --views list,show --responseType THYMELEAF

web mvc language --code es

然后使用了Spring Security保護(hù)了一下程序。第一行的是使用Spring Security的默認(rèn)配置,用戶名是user,密碼是打印在控制臺(tái)的隨機(jī)字符串。第二行配置了一下用戶權(quán)限,只有管理員角色的用戶才能執(zhí)行刪除操作。

security setup --provider DEFAULT

security authorize --class ~.service.impl.OwnerServiceImpl --method delete.* --roles ADMIN

然后啟用了審計(jì)功能,程序會(huì)自動(dòng)記錄相應(yīng)實(shí)體類的編輯時(shí)間和編輯者。

jpa audit setup
jpa audit add --entity ~.domain.Pet
jpa audit add --entity ~.domain.Owner
jpa audit add --entity ~.domain.Visit
jpa audit add --entity ~.domain.Vet

然后啟用了Web服務(wù)端點(diǎn)功能,這些端點(diǎn)可以在/servicesURL下查看。

ws endpoint --service ~.service.api.OwnerService --sei ~.ws.api.OwnerWebService --class ~.ws.endpoint.OwnerWebServiceEndpoint --config ~.config.WsEndpointsConfiguration
ws endpoint --service ~.service.api.PetService --sei ~.ws.api.PetWebService --class ~.ws.endpoint.PetWebServiceEndpoint --config ~.config.WsEndpointsConfiguration

最后自動(dòng)為這些實(shí)體類和服務(wù)生成單元測(cè)試和集成測(cè)試。

// Generating unitary tests for all entities
test unit --class ~.domain.Owner
test unit --class ~.domain.Pet
test unit --class ~.domain.Vet
test unit --class ~.domain.Visit

// Repository integration tests
test integration --class ~.repository.VetRepository
test integration --class ~.repository.OwnerRepository
test integration --class ~.repository.VisitRepository
test integration --class ~.repository.PetRepository

// Controller integration tests
test integration --class ~.web.OwnersCollectionJsonController
test integration --class ~.web.PetsItemJsonController
test integration --class ~.web.VetsCollectionThymeleafController
test integration --class ~.web.VisitsItemThymeleafController

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“spring Roo怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI