gpt4 book ai didi

java - 为基于注释的 Spring MVC Controller 设置混合配置

转载 作者:搜寻专家 更新时间:2023-11-01 00:53:14 24 4
gpt4 key购买 nike

我的 Spring 3.x 项目中有许多具有各种请求处理程序的 Controller (全部基于注释,使用 @Controller@RequestMapping)。

目前,应用上下文只定义DefaultAnnotationHandlerMappingAnnotationMethodHandlerAdapter bean 。如果我没看错的话,这些也可以换成<mvc:annotation-driven/> .
现有的 Controller 大多填充通过参数传入的模型,然后将 View 名称作为字符串返回。映射由标准 DefaultRequestToViewNameTranslator 完成和 InternalResourceViewResolver bean 类。

现在我想介绍一个新的 Controller ,它需要一个HttpMessageConverter。 (它将是一个 MappingJacksonHttpMessageConverter )和一个 HandlerExceptionResolver特定于此 Controller 。

现有 Controller 不应受到任何影响。它们的请求和响应都不应该由消息转换器转换,也不应该由异常解析器处理任何异常。


有没有办法在不删除新 Controller 的基于注释的配置的情况下执行此操作?有没有办法专门为一个 Controller 设置消息转换器和异常解析器,而不放弃基于@RequestMapping的URL路由? ?

或者是否有一种方法可以使用 Controller 上的注释来选择转换器/解析器配置?

如果不是,下一个最好的方法是什么?

最佳答案

如果您按照说明使用@ExceptionHandler 注释您的方法here它只会处理放置它的 Controller 的方法抛出的异常。所以它不会影响其他的。

关于HttpMessageConverter,我不确定我要说的是否可以应用到HttpMessageConverter上(因为我从来没有用过它,我不确定它是否可以作为其他转换器处理),但是如果你可以用它创建一个 conversionService 你可以在 Controller 中做这样的事情:

@Autowired
private ConversionService conversionService;

@InitBinder
public void initBinder(WebDataBinder binder){
binder.setConversionService(conversionService);
}

并且conversionService只会应用到这个initBinder的controller方法上。

关于java - 为基于注释的 Spring MVC Controller 设置混合配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4377361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com