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

Micronaut引入外部Jar中Controller遇404问题求助

问题原因与解决方案

核心问题

你遇到的404是因为:尽管@Import把外部Jar里的Controller实例加载到了Micronaut上下文,但Micronaut的HTTP端点注册机制没有识别这些类为控制器。通常由两个原因导致:

  • 外部Jar中的Controller没有经过Micronaut注解处理器编译,缺少必要的元数据;
  • @Import的配置仅完成Bean加载,未触发Micronaut的HTTP端点扫描逻辑。

具体解决方案

1. 修正外部Jar的构建配置(有权限修改外部模块时)

如果能修改module1/module2的代码,必须在其构建配置中添加Micronaut注解处理器,编译时生成识别HTTP控制器所需的元数据:

Gradle 示例(build.gradle)

plugins {
    id "io.micronaut.library" version "4.0.0" // 替换为你的Micronaut版本
}

dependencies {
    implementation "io.micronaut:micronaut-http-server"
    annotationProcessor "io.micronaut:micronaut-inject-java"
    annotationProcessor "io.micronaut:micronaut-http-server"
}

Maven 示例(pom.xml)

<dependency>
    <groupId>io.micronaut</groupId>
    <artifactId>micronaut-http-server</artifactId>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.micronaut</groupId>
    <artifactId>micronaut-inject-java</artifactId>
    <scope>provided</scope>
</dependency>

同时确认Controller使用Micronaut原生注解,而非其他框架的:

// 必须导入Micronaut的注解
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;

@Controller("/module1")
public class Module1Controller {

    @Get(produces = {"text/plain"})
    public String index() {
        return "Hello Module 1!";
    }
}

2. 调整容器应用的扫描配置(无法修改外部Jar时)

替换@Import为@ComponentScan,触发Micronaut的完整组件扫描,包含HTTP端点的识别与注册:

import io.micronaut.runtime.Micronaut;
import io.micronaut.context.annotation.ComponentScan;

@ComponentScan(
    packages = {"com.example.module1", "com.example.module2"}
)
public class Application {

    public static void main(String[] args) {
        Micronaut.run(Application.class, args);
    }
}

3. 验证端点注册状态

在application.yml中添加日志配置,启动时查看所有注册的HTTP端点:

logger:
    levels:
        io.micronaut.http.server: DEBUG

启动日志中会列出所有端点路径,确认/module1是否存在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:33:21