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

SpringBoot+Gradle集成Togglz后管理控制台404求助

问题分析与解决方案

1. 依赖版本不兼容

你的build.gradle中Togglz Starter和控制台依赖版本不一致,这会导致组件兼容性问题,是控制台404的核心原因之一。

修正后的依赖配置:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    // 统一Togglz版本,避免兼容性冲突
    implementation("org.togglz:togglz-spring-boot-starter:3.3.3")
    implementation("org.togglz:togglz-console:3.3.3")
}

2. 配置文件参数错误

application.yml存在两处关键配置错误:

  • features-file是用来指定功能状态存储文件路径的,不是枚举类的全限定名;枚举类需用feature-enums配置。
  • 未明确启用控制台,且缺少控制台路径配置。

修正后的application.yml:

togglz:
  feature-enums: com.example.demo.Features # 指定功能枚举类路径
  features:
    MOCK:
      enabled: true
  console:
    enabled: true # 明确启用控制台
    secured: false # 开发环境关闭安全校验
    path: /togglz-console # 设置控制台访问路径
# 注:management端点暴露的`togglz`是Togglz的Actuator API,与控制台是独立入口
management:
  endpoints:
    web:
      exposure:
        include: 'togglz'

3. 自定义配置与自动配置冲突

你实现的MyTogglzConfiguration会覆盖Spring Boot Togglz Starter的自动配置,导致控制台Servlet未被正确注册。

解决方案:

  • 若不需要自定义StateRepository和UserProvider,直接删除MyTogglzConfiguration,依赖自动配置即可。
  • 若必须保留自定义配置,需添加@Configuration注解并手动注册控制台Servlet:
@Configuration
public class MyTogglzConfiguration implements TogglzConfig {

    @Override
    public Class<? extends Feature> getFeatureClass() {
        return Features.class;
    }

    @Override
    public StateRepository getStateRepository() {
        return new FileBasedStateRepository(new File("/tmp/features.properties"));
    }

    @Override
    public UserProvider getUserProvider() {
        return new ServletUserProvider("admin");
    }

    // 注册控制台Servlet
    @Bean
    public TogglzConsoleServlet togglzConsoleServlet() {
        return new TogglzConsoleServlet();
    }

    // 配置控制台Servlet映射路径
    @Bean
    public ServletRegistrationBean<TogglzConsoleServlet> togglzConsoleServletRegistration() {
        ServletRegistrationBean<TogglzConsoleServlet> registration = new ServletRegistrationBean<>(togglzConsoleServlet());
        registration.addUrlMappings("/togglz-console/*");
        registration.setName("TogglzConsoleServlet");
        return registration;
    }
}

4. 验证访问

启动应用后,访问http://localhost:8080/togglz-console(替换为你的应用端口)即可打开Togglz管理控制台。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:21:15