关于SpringBoot2.X中put方法与delete方法不生效

探讨SpringBoot2.X中PUT与DELETE方法不生效的问题,深入分析WebMvcAutoConfiguration源码,揭示配置冲突原因及解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于SpringBoot2.X中put方法与delete方法不生效

经过部分源码阅读 : WebMvcAutoConfiguration.java


@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)

public class WebMvcAutoConfiguration {

	@Bean
	@ConditionalOnMissingBean(HiddenHttpMethodFilter.class)
	@ConditionalOnProperty(prefix = "spring.mvc.hiddenmethod.filter", name = "enabled", matchIfMissing = false)
	public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
		return new OrderedHiddenHttpMethodFilter();
	}
}

很多人说在配置文件中配置 : spring.mvc.hiddenmethod.filter.enabled = true 即可 ,可是我的即便配置后也不能实现 到 @PutMapping("/emp")方法中 , 反而一直访问 @PostMapping("/emp") 于是翻阅源码发现 , 一句配置 @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
该类在没有配置 WebMvcConfigurationSupport.class 的时候才生效 , 刚好我使用的 config 刚好继承了 WebMvcConfigurationSupport 所以不能成功使用

如果您的Spring Boot应用程序在配置CORS时,仍然不生效,可能是由于以下原因之一: 1. 配置不正确 请确保您已经正确地配置了CORS。您可以在WebMvcConfigurer中使用addCorsMappings方法来配置CORS。以下是一个示例配置: ``` @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowedHeaders("*"); } } ``` 在上面的示例中,我们配置了允许所有来源(allowedOrigins),所有HTTP方法(allowedMethods)和所有头文件(allowedHeaders)的跨域请求。 2. Filter顺序不正确 在Spring Boot中,如果您使用了自定义的Filter,可能会影响CORS的配置。请确保您的Filter的顺序正确,以确保CORS的Filter在您的Filter之前执行。以下是一个示例配置: ``` @Bean public FilterRegistrationBean<CorsFilter> corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source)); bean.setOrder(Ordered.HIGHEST_PRECEDENCE); return bean; } ``` 请注意,我们将CORS的Filter设置为具有最高优先级(Ordered.HIGHEST_PRECEDENCE),以确保它优先于其他Filter执行。 3. 缓存问题 如果您在浏览器中测试CORS时,可能会遇到缓存问题。请尝试在测试时清除浏览器缓存,或者使用不同的浏览器进行测试。 总之,如果您的CORS配置不生效,建议您逐一排查上述问题,以确保您的CORS配置正确并且在正确的顺序下执行。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值