我们来看几个容易混淆的用于简化开发的配置: <mvc:annotation-driven />, <context:annotation-config/>, <context:component-scan />。
<mvc:annotation-driven /> 会做以下几件事:
<mvc:annotation-driven /> 会做以下几件事:
- 向 spring 容器中注册 DefaultAnnotationHandlerMapping。
- 向 spring 容器中注册 AnnotationMethodHandlerAdapter。
- 配置一些 messageconverter。
- 解决了 @Controller 注解的使用前提配置,即 HandlerMapping 能够知道谁来处理请求。
- 向 spring 容器中注册 AutowiredAnnotationBeanPostProcessor。
- 向 spring 容器中注册 CommonAnnotationBeanPostProcessor。
- 向 spring 容器中注册 PersistenceAnnotationBeanPostProcessor。
- 向 spring 容器中注册 RequiredAnnotationBeanPostProcessor。
- 使用 <context:annotationconfig />之前,必须在 <beans> 元素中声明 context 命名空间 <context:component-scan />。<context:component-scan /> 对包进行扫描,实现注解驱动 Bean 定义。即,将 @Controller 标识的类的 bean 注册到容器中。