SpringMVC配置⽂件的三个常⽤配置详解
  Spring MVC项⽬中通常会有⼆个配置⽂件,l和l⼆个配置⽂件,通常会出现以下⼏个配置
  1. <context:annotation-config />
  它的作⽤是隐式地向 Spring 容器注册  AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor、RequiredAnnotationBeanPostProcessor 这4个BeanPostProcessor。其作⽤是如果你想在程序中使⽤注解,就必须先注册该注解对应的类,如下图所⽰:
依赖的类注解
CommonAnnotationBeanPostProcessor@Resource 、@PostConstruct、@PreDestroy PersistenceAnnotationBeanPostProcessor的Bean@PersistenceContext
AutowiredAnnotationBeanPostProcessor Bean@Autowired
RequiredAnnotationBeanPostProcessor@Required
  当然也可以⾃⼰进⾏注册:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/>
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
springmvc常用标签  2. <context:component-scan base-package="com.*" >
<context:component-scan/> 配置项不但启⽤了对类包进⾏扫描以实施注释驱动 Bean 定义的功能,同时还启⽤了注释驱动⾃动注⼊的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使⽤
<context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。
在这⾥有⼀个⽐较有意思的问题,就是扫描是否需要在⼆个配置⽂件都配置⼀遍,我做了这么⼏种测试:
  (1)只在l中配置如下
<context:component-scan base-package="com.login"/>
  启动正常,但是任何请求都不会被拦截,简⽽⾔之就是@Controller失效
  (2)只在l中配置上述配置
  启动正常,请求也正常,但是事物失效,也就是不能进⾏回滚
  (3)在l和l中都配置上述信息
  启动正常,请求正常,也是事物失效,不能进⾏回滚
  (4)在l中配置如下
<context:component-scan base-package="com.login"/>
  在l中配置如下
<context:component-scan base-package="com.sohu.login.web"/>
  此时启动正常,请求正常,事物也正常了。
  结论:在l中只需要扫描所有带@Controller注解的类,在applicationContext中可以扫描所有其他带有注解的类(也可以过滤掉带@Controller注解的类)。
  3. <mvc:annotation-driven />
  它会⾃动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。