You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Micronaut中为@OpenAPIDefinition配置动态值

@OpenAPIDefinition注解动态取值配置方案

Micronaut OpenAPI原生支持@OpenAPIDefinition注解的占位符动态取值,你当前在Application.class上配置的以下写法可正常生效,是因为注解处理阶段默认扫描openapi.properties文件完成占位符替换:

@OpenAPIDefinition(
    info = @Info(title = "${info.title}", description = "${info.description}",version  ="${info.version}"), 
    servers = {@Server(url ="${server.context-path}")}
)

跨配置文件、构建生成属性的引用只需要调整OpenAPI插件的属性加载规则即可,两个配置目标的实现方式如下:

引用application.properties中的micronaut.server.context-path属性

直接填写${micronaut.server.context-path}被识别为普通字符串,是因为OpenAPI注解处理器默认不会加载application.properties的配置项,需要在构建脚本中显式指定要加载的额外属性文件:

  • Gradle项目配置(build.gradle):
tasks.named("openApi") {
    propertiesFile = files(
        "src/main/resources/openapi.properties",
        "src/main/resources/application.properties"
    )
}
  • Maven项目配置(pom.xml):
<plugin>
    <groupId>io.micronaut.openapi</groupId>
    <artifactId>micronaut-openapi-maven-plugin</artifactId>
    <configuration>
        <propertiesFile>src/main/resources/openapi.properties,src/main/resources/application.properties</propertiesFile>
    </configuration>
</plugin>

配置完成后,在注解中直接使用${micronaut.server.context-path}占位符即可读取到实际配置值。

引用build-info.properties中的build.version属性

build-info.properties是构建阶段生成的属性文件,默认输出路径为构建产物的META-INF目录下,只需要将该文件路径加入上述propertiesFile加载列表,同时保证OpenAPI生成任务在build-info生成任务之后执行即可:

  • Gradle项目补充配置:
tasks.named("openApi") {
    dependsOn("generateBuildInfo")
    propertiesFile = files(
        "src/main/resources/openapi.properties",
        "src/main/resources/application.properties",
        "build/resources/main/META-INF/build-info.properties"
    )
}
  • Maven项目需要调整插件执行顺序,将micronaut-openapi插件的执行阶段绑定在process-classes阶段之后,同时把build-info.properties的路径追加到propertiesFile配置项中。
    配置完成后,在@Info的version属性中使用${build.version}占位符即可正常读取构建生成的版本号。

内容的提问来源于stack exchange,提问作者Miguel Jr. Bermundo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:15:11