2019独角兽企业重金招聘Python工程师标准>>>

 Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和applicationContext.xml二个配置文件,通常会出现以下几个配置

  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"/> 

 2. <context:component-scan base-package="com.*" >

<context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。

在这里有一个比较有意思的问题,就是扫描是否需要在二个配置文件都配置一遍,我做了这么几种测试:

  (1)只在applicationContext.xml中配置如下

<context:component-scan base-package="com.login" />

启动正常,但是任何请求都不会被拦截,简而言之就是@Controller失效

  (2)只在spring-servlet.xml中配置上述配置

  启动正常,请求也正常,但是事物失效,也就是不能进行回滚

  (3)在applicationContext.xml和spring-servlet.xml中都配置上述信息

  启动正常,请求正常,也是事物失效,不能进行回滚

  (4)在applicationContext.xml中配置如下

<context:component-scan base-package="com.login" />

 在spring-servlet.xml中配置如下

<context:component-scan base-package="com.sohu.login.web" />

此时启动正常,请求正常,事物也正常了。

  结论:在spring-servlet.xml中只需要扫描所有带@Controller注解的类,在applicationContext中可以扫描所有其他带有注解的类(也可以过滤掉带@Controller注解的类)。

  3. <mvc:annotation-driven />

  它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter

转载于:https://my.oschina.net/Cubicluo/blog/843254

Spring MVC配置文件的三个常用配置详解相关推荐

  1. Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解

    转载自https://blog.csdn.net/shinebar/article/details/54408020 引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的 ...

  2. spring之旅第四篇-注解配置详解

    spring之旅第四篇-注解配置详解 一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会 ...

  3. Redis常用配置详解

    目录 1.使用config命令查看和修改配置 2.编辑redis.conf文件修改redis配置 3.redis.conf中常用配置项说明 Redis 的配置文件位于 Redis 安装目录下,文件名为 ...

  4. logback 常用配置详解(二) appender

    详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置详解(一)<configuration> an ...

  5. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  6. logback 常用配置详解appender

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  7. nginx常用配置详解

    一.nginx配置文件结构: ... #全局块 events { #events块 ...} http #http块{ ... #http全局块 server #server块 { ... #serv ...

  8. Spring框架深入(四)--SpringMVC配置详解

    一.SpringMVC web模型 二.@RequestMapping参数说明 1.value:定义处理方法的请求的URL地址: 2.method:定义处理的方法的http method类型,如GET ...

  9. springboot核心配置文件 application.properties 或者 yml 常用配置详解

    properties  文件: properties文件  是以KV格式存在的, 字符集 默认为 iso-8859-1 如何需要输入中文 需更改字符集utf-8   备注以   #   开头.   常 ...

最新文章

  1. Hyper-V 2节点集群高可用的限制
  2. android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...
  3. Android第三十一期 - 市面上所有引导页的效果
  4. 《图解密码技术》分组密码(1) 概览
  5. set / ... 去重的方法
  6. 《线性代数的几何意义》笔记(1)
  7. git重命名远程仓库名字 同步fork代码
  8. 重新打包mysql数据库文件_服务器每天早上备份一次 MySQL 数据库并自动打包,同时删除 5 天前的备份文件...
  9. 微软操作系统 Windows Server 2012 R2 官方原版镜像-转载
  10. 一代、二代、三代测序技术原理与比较
  11. 微信公众号发红包功能,现金红包、裂变红包接口
  12. mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
  13. 百度地图实现marker显示数字
  14. 巧用快捷键轻松设置Eexel单元格格式(转)
  15. 随遇而安也是一种选择
  16. 联想服务器td340安装精简版win10
  17. 火爆美国却突遇警告:“变脸应用FaceApp是俄国人搞的,大家别用了”
  18. Python实现识别多个条码/二维码(一)
  19. 优盘显示需要格式化,怎么恢复正常?
  20. 计算机组成原理-chp4-指令系统

热门文章

  1. 双绞线是计算机网络的一种通信线路吗,计算机网络环境的信道传输技术分析
  2. 董东 java_Java面向对象程序设计
  3. android profiler 简书,使用AndroidStudio提供的Android Profiler工具和mat进行内存泄漏分析...
  4. mysql的优化之table_open_cache 篇_mysql性能优化之table_open_cache
  5. 线性表List的基本创建
  6. JS 缓存 设置临时缓存和长期缓存 sessionStorage localStorage
  7. shell编程--case判断
  8. Uva 10074【递推dp】
  9. CLion 2017 注册码
  10. java学习笔记-java中运算符号的优先顺序