W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本節(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 |
|
|
任何依賴注釋元數(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 注釋,要么為您希望使用的注釋庫添加依賴項。
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 |
|
|
此外,如果使用了任何 ?Rx
? HTTP 客戶端接口,則必須添加依賴項并且必須更新導(dǎo)入。
Gradle | Maven |
|
|
舊 | 新 |
---|---|
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 |
|
|
我們建議切換到 Project Reactor,因為這是 Micronaut 內(nèi)部使用的實(shí)現(xiàn)。向 RxJava2 添加依賴項將導(dǎo)致在應(yīng)用程序的運(yùn)行時類路徑中實(shí)現(xiàn)這兩種實(shí)現(xiàn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: