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

如何让Micronaut MVC风格Java应用在两个端口暴露同一路由?

在Micronaut中实现单路由多端口部署(区分买家/卖家)

核心思路

把原有的/route/buyer和/route/seller合并为统一的/route/路由,通过启动两个独立的应用实例(分别绑定不同端口)区分买家和卖家的访问入口,这样就能直接在网络层面通过封禁/开放端口实现管控。

步骤1:调整控制器路由

修改原有控制器,将两个子路由合并为单一路由/route/,如果需要在代码里区分实例角色(买家/卖家),可以通过配置注入标识:

import io.micronaut.http.HttpResponse;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.context.annotation.Value;
import jakarta.inject.Inject;

@Controller("/route")
public class RouteController {

    // 注入当前实例的角色标识(买家/卖家)
    @Inject
    @Value("${app.role}")
    private String appRole;

    @Get("/")
    public HttpResponse<String> handleRoute() {
        if ("buyer".equals(appRole)) {
            // 执行买家专属逻辑
            return HttpResponse.ok("Buyer access processed");
        } else if ("seller".equals(appRole)) {
            // 执行卖家专属逻辑
            return HttpResponse.ok("Seller access processed");
        }
        return HttpResponse.badRequest("Invalid instance role");
    }
}

步骤2:配置多环境端口

创建两个环境配置文件,分别指定买家和卖家实例的端口及角色标识:

买家环境配置(application-buyer.yml)

micronaut:
  server:
    port: 8080 # 买家专属端口
app:
  role: buyer

卖家环境配置(application-seller.yml)

micronaut:
  server:
    port: 8081 # 卖家专属端口
app:
  role: seller

步骤3:启动两个独立实例

通过指定不同的环境参数启动应用,分别对应买家和卖家端口:

  • 启动买家实例:
java -jar your-application.jar -Dmicronaut.environments=buyer
  • 启动卖家实例:
java -jar your-application.jar -Dmicronaut.environments=seller

如果使用Gradle构建工具,可通过以下命令启动:

# 买家实例
./gradlew run -Dmicronaut.environments=buyer

# 卖家实例
./gradlew run -Dmicronaut.environments=seller

网络层面管控

需要封禁卖家访问时,直接通过防火墙、安全组或云平台的网络规则禁用8081端口即可;解封时开放该端口,无需修改任何代码或重启应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:52:18