什么意味着默认启用某个spring bean?如何访问该bean?

时间:2013-11-12 13:54:31

标签: spring spring-mvc

我正在使用基于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.

1 个答案:

答案 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。这也是该类被弃用的原因。