如何通过配置禁用Spring GraphQL的所有端点与控制器?
禁用Spring GraphQL所有端点的实现方案
Spring GraphQL目前没有提供spring.graphql.enabled这类全局开关配置,但可以通过以下几种可靠方式实现禁用所有GraphQL端点/控制器的效果:
方案一:排除GraphQL自动配置类
在Spring Boot启动类上通过@SpringBootApplication的exclude属性,跳过GraphQL相关的自动配置类,从根源阻止GraphQL组件的初始化:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.graphql.GraphQlAutoConfiguration; import org.springframework.boot.autoconfigure.graphql.GraphQlWebMvcAutoConfiguration; @SpringBootApplication(exclude = { GraphQlAutoConfiguration.class, GraphQlWebMvcAutoConfiguration.class }) public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }如果你使用的是WebFlux环境,需要替换为
GraphQlWebFluxAutoConfiguration.class。方案二:禁用GraphQL的Web端点映射
若不想完全排除自动配置,可通过配置属性直接关闭GraphQL的Web端点:- 对于Servlet环境(Spring MVC):
spring.graphql.servlet.enabled=false - 对于WebFlux环境:
spring.graphql.webflux.enabled=false
该配置会阻止GraphQL端点的注册,但仍会初始化部分核心GraphQL Bean,若需要完全禁用,推荐方案一。
- 对于Servlet环境(Spring MVC):
方案三:自定义条件控制GraphQL组件
可以通过@ConditionalOnProperty注解自定义配置类,让GraphQL相关组件仅在指定配置开启时生效:import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Configuration; import org.springframework.graphql.server.WebGraphQlHandler; @Configuration @ConditionalOnProperty( name = "spring.graphql.enabled", havingValue = "true", matchIfMissing = true ) public class GraphQlConditionalConfig { // 此处可导入或定义GraphQL相关Bean,仅当spring.graphql.enabled为true时加载 }之后在配置文件中设置
spring.graphql.enabled=false,即可间接禁用所有GraphQL功能。
注意:不同版本的Spring GraphQL可能存在配置细节差异,建议结合你使用的具体版本调整实现方式。
内容的提问来源于stack exchange,提问作者lgean
相关产品推荐
相关产品推荐

