我正在使用基于xml的spring配置。我在spring doc中发现默认情况下启用某个bean。这是什么意思?我如何解决该bean以更改其中一个属性。我明白,如果我定义一个bean,我可以在它的定义中配置它。但是现有的“默认启用”bean呢?
编辑:来自org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver javadoc:
@Deprecated public class AnnotationMethodHandlerExceptionResolver
extends AbstractHandlerExceptionResolver Implementation of the
org.springframework.web.servlet.HandlerExceptionResolver interface
that handles exceptions through the ExceptionHandler annotation. This
exception resolver is enabled by default in the
org.springframework.web.servlet.DispatcherServlet.
答案 0 :(得分:1)
这意味着如果您没有指定任何其他DispatcherServlet
bean,只需在应用程序配置中指定AnnotationMethodHandlerExceptionResolver
servlet就会注册HandlerExceptionResolver
bean。
当您运行Spring MVC webapp时,您会注意到类路径中有一个DispatcherServlet.properties
文件。此属性文件定义了此属性
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
描述了为HandlerExceptionResolver
DispatcherServlet's
创建bean并在其中注册的默认List<HandlerExceptionResolver>
类。这是在DispatcherServlet#getDefaultStrategies()
方法中完成的。
请注意,只有在用于初始化DispatcherServlet
的上下文未声明任何HandlerExceptionResolver
bean时,才会发生这种情况。典型的应用程序将使用HandlerExceptionResolver
元素或<mvc:annotation-driven>
注释注册不同的@EnableWebMvc
bean。这也是该类被弃用的原因。