簡體   English   中英

Kotlin 擴展 spring 引導注釋

[英]Kotlin extending spring boot annotations

使用 Kotlin 我可以將默認值保存在 class 級別注釋中,例如

@Profile("dev", "staging", "production")
annotation class RemoteProfile

我很好奇是否有一種方法可以通過參數注釋實現類似的功能-例如,我希望能夠執行以下操作:

fun someHandler(@AccountParam account: Account) {
   ...
}

spring 下面的位置會將其解釋為

fun someHandler(@RequestAttribute("ACCOUNT") account: Account) {
   ...
}

您正在尋找的概念是meta-annotation 您的第一個示例有效的原因與 Kotlin 無關,並且是 Spring 的一個功能,其中 Spring 主動檢查注釋層次結構。 來自Profile的 Javadoc

@Profile注解可以通過以下任何方式使用:

  • 作為元注釋,用於編寫自定義構造型注釋

MVC 注釋RequestAttributeRequestParam不支持元注釋。 您可以定義自己的HandlerMethodArgumentResolver來支持這一點(它不是非常復雜,並且您可以RequestAttributeMethodArgumentResolver ),但通常不能只是元注釋。

(Groovy 的AnnotationCollector確實支持這一點,但它是通過編譯時“展開”實現的,我不相信 Kotlin 具有等效功能。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM