W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Groovy 在 Micronaut 中擁有一流的支持。
Groovy 專用模塊
存在特定于 Groovy 的附加模塊,可改善整體體驗(yàn)。這些在下表中有詳細(xì)說明:
依賴 | 描述 |
---|---|
|
包括 AST 轉(zhuǎn)換以生成 bean 定義。應(yīng)該是 compileOnly 在你的類路徑上。 |
|
添加以 Groovy 格式(即 application.groovy)在 src/main/resources 下指定配置的能力 |
|
包括 AST 轉(zhuǎn)換,可以更輕松地為 AWS Lambda 編寫函數(shù) |
您需要的最常見模塊是 micronaut-inject-groovy,它為 Groovy 類啟用 DI 和 AOP。
CLI 中的 Groovy 支持
Micronaut 命令行界面包括對(duì) Groovy 的特殊支持。要?jiǎng)?chuàng)建 Groovy 應(yīng)用程序,請(qǐng)使用 groovy lang 選項(xiàng)。例如:
Create a Micronaut Groovy application
$ mn create-app hello-world --lang groovy
上面生成了一個(gè) Groovy 項(xiàng)目,使用 Gradle 構(gòu)建。使用 -build maven 標(biāo)志來生成一個(gè)使用 Maven 構(gòu)建的項(xiàng)目。
一旦您創(chuàng)建了具有 groovy 特性的應(yīng)用程序,create-controller、create-client 等命令就會(huì)生成 Groovy 文件而不是 Java。以下示例在使用 CLI 的交互模式時(shí)演示了這一點(diǎn):
Create a bean
$ mn
| Starting interactive mode...
| Enter a command name to run. Use TAB for completion:
mn>
create-bean create-client create-controller
create-job help
mn> create-bean helloBean
| Rendered template Bean.groovy to destination src/main/groovy/hello/world/HelloBean.groovy
上面的示例演示了如何創(chuàng)建一個(gè)如下所示的 Groovy bean:
Micronaut Bean
package hello.world
import javax.inject.Singleton
@Singleton
class HelloBean {
}
Groovy 自動(dòng)導(dǎo)入 groovy.lang.Singleton,這可能會(huì)造成混淆,因?yàn)樗c javax.inject.Singleton 沖突。確保在聲明 Micronaut 單例 bean 時(shí)使用 javax.inject.Singleton 以避免意外行為。
我們還可以創(chuàng)建一個(gè)客戶端——?jiǎng)e忘了 Micronaut 可以充當(dāng)客戶端或服務(wù)器!
Create a client
mn> create-client helloClient
| Rendered template Client.groovy to destination src/main/groovy/hello/world/HelloClient.groovy
Micronaut Client
package hello.world
import io.micronaut.http.client.annotation.Client
import io.micronaut.http.annotation.Get
import io.micronaut.http.HttpStatus
@Client("hello")
interface HelloClient {
@Get
HttpStatus index()
}
現(xiàn)在讓我們創(chuàng)建一個(gè)控制器:
Create a controller
mn> create-controller helloController
| Rendered template Controller.groovy to destination src/main/groovy/hello/world/HelloController.groovy
| Rendered template ControllerSpec.groovy to destination src/test/groovy/hello/world/HelloControllerSpec.groovy
mn>
Micronaut Controller
package hello.world
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.HttpStatus
@Controller("/hello")
class HelloController {
@Get
HttpStatus index() {
return HttpStatus.OK
}
}
正如您從 CLI 的輸出中看到的那樣,還為您生成了一個(gè) Spock 測試,它演示了如何測試控制器:
HelloControllerSpec.groovy
...
void "test index"() {
given:
HttpResponse response = client.toBlocking().exchange("/hello")
expect:
response.status == HttpStatus.OK
}
...
請(qǐng)注意您如何使用 Micronaut 作為客戶端和服務(wù)器來測試自己。
使用 GroovyRouterBuilder 的編程路由
如果你更喜歡以編程方式構(gòu)建你的路由(類似于 Grails UrlMappings),一個(gè)特殊的 io.micronaut.web.router.GroovyRouteBuilder 存在,它有一些增強(qiáng)功能可以使 DSL 更好。
以下示例展示了 GroovyRouteBuilder 的實(shí)際應(yīng)用:
Using GroovyRouteBuilder
@Singleton
static class MyRoutes extends GroovyRouteBuilder {
MyRoutes(ApplicationContext beanContext) {
super(beanContext)
}
@Inject
void bookResources(BookController bookController, AuthorController authorController) {
GET(bookController) {
POST("/hello{/message}", bookController.&hello) (1)
}
GET(bookController, ID) { (2)
GET(authorController)
}
}
}
您可以使用注入控制器按約定創(chuàng)建路由,使用 Groovy 方法引用創(chuàng)建方法路由
ID 屬性可用于引用包含 {id} URI 變量
上面的示例導(dǎo)致以下路由:
在 Groovy 應(yīng)用程序中使用 GORM
GORM 是一個(gè)數(shù)據(jù)訪問工具包,最初是作為 Grails 的一部分創(chuàng)建的。它支持多種數(shù)據(jù)庫類型。下表總結(jié)了使用 GORM 所需的模塊,以及文檔鏈接。
依賴 | 描述 |
---|---|
|
為 Groovy 應(yīng)用程序配置 GORM for Hibernate。 |
|
為 Groovy 應(yīng)用程序配置 GORM for MongoDB。 |
|
為 Groovy 應(yīng)用程序配置 Neo4j 的 GORM。 |
一旦您按照上表中鏈接的說明配置了 GORM 實(shí)現(xiàn),您就可以使用 GORM 的所有功能。
GORM 數(shù)據(jù)服務(wù)還可以參與依賴注入和生命周期方法:
GORM Data Service VehicleService.groovy
@Service(Vehicle)
abstract class VehicleService {
@PostConstruct
void init() {
// do something on initialization
}
abstract Vehicle findVehicle(@NotBlank String name)
abstract Vehicle saveVehicle(@NotBlank String name)
}
您還可以將服務(wù)定義為接口而不是抽象類,讓 GORM 為您實(shí)現(xiàn)方法。
使用 Groovy 的無服務(wù)器函數(shù)
微服務(wù)應(yīng)用程序只是使用 Micronaut 的一種方式。您還可以將它用于 AWS Lambda 等無服務(wù)器功能。
通過 function-groovy 模塊,Micronaut 增強(qiáng)了對(duì)用 Groovy 編寫的函數(shù)的支持。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: