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

从Micronaut 3升级至4后,共享库中的Endpoint无法加载

解决Micronaut 4中共享库Endpoint未加载的问题

针对Micronaut 4升级后共享库中@Endpoint类无法被加载的问题,可按以下步骤排查解决:

1. 调整组件扫描范围

Micronaut 4默认仅扫描主应用的根包,共享库中的类不会自动纳入扫描范围。需在主应用配置文件(如application.yml)中显式添加共享库的包路径:

micronaut:
  package-scan:
    packages:
      - com.your.shared.library.package # 替换为你的共享库Endpoint所在实际包

2. 检查共享库构建配置

确保共享库的构建脚本(Gradle/Maven)正确配置Micronaut注解处理器,否则元数据生成缺失会导致Endpoint无法被识别:

  • Gradle示例:
plugins {
    id("io.micronaut.library") version "4.x.x"
}

dependencies {
    annotationProcessor("io.micronaut:micronaut-http-validation")
    annotationProcessor("io.micronaut.management:micronaut-management")
    implementation("io.micronaut.management:micronaut-management")
}
  • Maven示例:
<build>
    <plugins>
        <plugin>
            <groupId>io.micronaut.build</groupId>
            <artifactId>micronaut-maven-plugin</artifactId>
            <version>4.x.x</version>
            <extensions>true</extensions>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>io.micronaut.management</groupId>
        <artifactId>micronaut-management</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>io.micronaut</groupId>
        <artifactId>micronaut-http-validation</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

3. 验证注解与端点配置

确认共享库中@Endpoint注解导入的是Micronaut 4的正确包:

import io.micronaut.management.endpoint.annotation.Endpoint;
import io.micronaut.management.endpoint.annotation.Read;

同时在主应用配置中显式暴露该端点:

micronaut:
  management:
    endpoints:
      web:
        exposure:
          include: ping,health # 包含你的ping端点

4. 显式注册Endpoint Bean

若自动扫描仍不生效,可在主应用中通过@Factory显式注册共享库的Endpoint:

import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import com.your.shared.library.PingEndpoint;

@Factory
public class SharedEndpointFactory {
    @Bean
    public PingEndpoint pingEndpoint() {
        return new PingEndpoint();
    }
}

5. 开启调试日志定位问题

开启Micronaut组件扫描和路由构建的调试日志,查看详细过程:

logger:
  levels:
    io.micronaut.context: DEBUG
    io.micronaut.web.router: DEBUG

通过日志确认共享库的PingEndpoint是否被扫描到、是否成功注册为Bean。


内容的提问来源于stack exchange,提问作者Erik Pragt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:28:14