国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

Micronaut 升級到 Micronaut 3.x

2023-02-23 14:56 更新

本節(jié)介紹將 Micronaut 2.x 應(yīng)用程序升級到 Micronaut 3.0.0 所需的步驟。

下面的部分進(jìn)行了更詳細(xì)的介紹,但在較高層次上,該過程通常涉及:

  • 更新版本

  • 更新注解

  • 選擇 Reactive 實(shí)現(xiàn)

  • 調(diào)整受重大更改影響的代碼

通常,升級應(yīng)該很簡單,但使用 OpenRewrite 可以為自己節(jié)省一些工作,OpenRewrite 是一種自動重構(gòu)工具,您可以使用它來進(jìn)行許多必需的升級更改。

使用 OpenRewrite 自動升級

OpenRewrite 適用于用 Java 編寫的 Micronaut 應(yīng)用程序,但 OpenRewrite 目前不支持 Kotlin 或 Groovy。與任何自動化工具一樣,它會為您完成大部分工作,但請務(wù)必查看生成的更改并手動進(jìn)行 OpenRewrite 不支持的任何更改,例如從 RxJava2 轉(zhuǎn)換為 Reactor。

如果您將使用 OpenRewrite,請不要進(jìn)行任何會導(dǎo)致您的應(yīng)用程序無法編譯的升級更改,例如將 Micronaut 版本更新到 3.x。這將導(dǎo)致使用 ?javax.inject? 注釋(如 ?@Singleton?)或 RxJava2 類(如 ?io.reactivex.Flowable?)的應(yīng)用程序類無法編譯,因為默認(rèn)情況下不再包含這些依賴項。相反,使用 OpenRewrite 來完成初始工作,然后自己完成那些不可能或不適合自動化的步驟。

為您的構(gòu)建添加 OpenRewrite 支持很容易,只需要添加 Gradle 或 Maven 插件并配置插件以使用 Micronaut 升級配方。

請參閱 Gradle 功能差異 或 Maven 功能差異 以查看所需的構(gòu)建腳本更改。

對構(gòu)建腳本進(jìn)行更改后,您可以“試運(yùn)行”Micronaut 升級配方以查看將進(jìn)行哪些更改。

對于 Gradle,運(yùn)行

$ ./gradlew rewriteDryRun

并查看在 ?build/reports/rewrite/rewrite.patch? 中生成的差異報告

對于 Maven,運(yùn)行

$ ./mvnw rewrite:dryRun

并查看 ?target/site/rewrite/rewrite.patch? 中生成的差異報告。

然后你可以真正運(yùn)行 recipe,讓 OpenRewrite 更新你的代碼。

對于 Gradle,運(yùn)行

$ ./gradlew rewriteRun

對于 Maven,運(yùn)行

$ ./mvnw rewrite:run

完成更改后,您可以刪除插件,但最好保留它,因為 OpenRewrite 不會自動運(yùn)行,只有當(dāng)您運(yùn)行其中一個命令時。除了 Micronaut 升級 recipe 之外,還有更多可用的 recipe,您可能希望包含這些 recipe 以自動執(zhí)行其他代碼更改。

該插件包含另一個命令,用于列出當(dāng)前在類路徑中的所有 recipe(在本例中是核心 recipe 加上由 ?rewrite-micronaut? 模塊添加的 recipe)。

對于 Gradle,運(yùn)行

$ ./gradlew rewriteDiscover

對于 Maven,,運(yùn)行

$ ./mvnw rewrite:discover

可用的 recipe 和樣式將輸出到控制臺。查看 OpenRewrite 文檔 以獲取更多信息并查看許多其他可用的方法。

版本更新

如果您使用 Gradle,請更新 ?gradle.properties? 中的 ?micronautVersion? 屬性,例如

gradle.properties

micronautVersion=3.8.5

如果您使用 Maven,請更新 ?pom.xml? 中的父 POM 版本和 ?micronaut.version? 屬性,例如

pom.xml

<parent>
  <groupId>io.micronaut</groupId>
  <artifactId>micronaut-parent</artifactId>
  <version>3.8.5</version>
</parent>

<properties>
  ...
  <micronaut.version>3.8.5</micronaut.version>
  ...
</properties>

構(gòu)建插件更新

如果您使用 Micronaut Gradle 插件 更新到 最新版本。

對于 Maven 用戶,插件版本會在您更新 Micronaut 版本時自動更新。

注入注解

?javax.inject? 注釋不再是傳遞依賴。 Micronaut 現(xiàn)在附帶 Jakarta 注入注解。用 ?jakarta.inject? 替換所有 ?javax.inject? 導(dǎo)入,或者添加對 ?javax-inject? 的依賴以繼續(xù)使用舊的注釋:

 Gradle  Maven
implementation("javax.inject:javax.inject:1")
<dependency>
    <groupId>javax.inject</groupId>
    <artifactId>javax.inject</artifactId>
    <version>1</version>
</dependency>

任何依賴注釋元數(shù)據(jù)中存在的 ?javax.inject? 注釋的代碼仍將按預(yù)期工作,但是必須更改與它們交互的任何代碼以不再引用注釋類本身。使用注釋元數(shù)據(jù)時,應(yīng)使用 AnnotationUtil 類中的靜態(tài)變量(例如 ?AnnotationUtil.INJECT?、?AnnotationUtil.SINGLETON? 等)代替注釋類。

可空性注解

Micronaut 現(xiàn)在只帶有自己的一組注釋來聲明可空性。 findbugs、javax 和 jetbrains 注釋仍然受支持,但是您必須添加依賴項才能使用它們。要么切換到 Micronaut @Nullable /  @NonNull 注釋,要么為您希望使用的注釋庫添加依賴項。

RxJava2

Micronaut 不再將任何響應(yīng)式實(shí)現(xiàn)作為我們?nèi)魏文K或核心庫中的默認(rèn)實(shí)現(xiàn)。升級到 Micronaut 3 需要選擇要使用的反應(yīng)流實(shí)現(xiàn),然后添加相關(guān)依賴項。

對于那些已經(jīng)在使用 RxJava3 或 Project Reactor 的人,升級到 Micronaut 3 應(yīng)該不需要做任何更改。如果您使用 RxJava2 并希望繼續(xù)使用它,則必須添加一個依賴項:

 Gradle  Maven
implementation("io.micronaut.rxjava2:micronaut-rxjava2")
<dependency>
    <groupId>io.micronaut.rxjava2</groupId>
    <artifactId>micronaut-rxjava2</artifactId>
</dependency>

此外,如果使用了任何 ?Rx? HTTP 客戶端接口,則必須添加依賴項并且必須更新導(dǎo)入。

 Gradle  Maven
implementation("io.micronaut.rxjava2:micronaut-rxjava2-http-client")
<dependency>
    <groupId>io.micronaut.rxjava2</groupId>
    <artifactId>micronaut-rxjava2-http-client</artifactId>
</dependency>

表 1. RxJava2 HTTP 客戶端導(dǎo)入

io.micronaut.http.client.RxHttpClient

io.micronaut.rxjava2.http.client.RxHttpClient

io.micronaut.http.client.RxProxyHttpClient

io.micronaut.rxjava2.http.client.proxy.RxProxyHttpClient

io.micronaut.http.client.RxStreamingHttpClient

io.micronaut.rxjava2.http.client.RxStreamingHttpClient

io.micronaut.http.client.sse.RxSseClient

io.micronaut.rxjava2.http.client.sse.RxSseClient

io.micronaut.websocket.RxWebSocketClient

io.micronaut.rxjava2.http.client.websockets.RxWebSocketClient

如果使用基于 Netty 的服務(wù)器實(shí)現(xiàn),則必須添加額外的依賴項:

 Gradle Maven 
implementation("io.micronaut.rxjava2:micronaut-rxjava2-http-server-netty")
<dependency>
    <groupId>io.micronaut.rxjava2</groupId>
    <artifactId>micronaut-rxjava2-http-server-netty</artifactId>
</dependency>

我們建議切換到 Project Reactor,因為這是 Micronaut 內(nèi)部使用的實(shí)現(xiàn)。向 RxJava2 添加依賴項將導(dǎo)致在應(yīng)用程序的運(yùn)行時類路徑中實(shí)現(xiàn)這兩種實(shí)現(xiàn)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號