Spring MVC配置文件的三个常用配置详解
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配置文件的三个常用配置详解相关推荐
- Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
转载自https://blog.csdn.net/shinebar/article/details/54408020 引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的 ...
- spring之旅第四篇-注解配置详解
spring之旅第四篇-注解配置详解 一.引言 最近因为找工作,导致很长时间没有更新,找工作的时候你会明白浪费的时间后面都是要还的,现在的每一点努力,将来也会给你回报的,但行好事,莫问前程!努力总不会 ...
- Redis常用配置详解
目录 1.使用config命令查看和修改配置 2.编辑redis.conf文件修改redis配置 3.redis.conf中常用配置项说明 Redis 的配置文件位于 Redis 安装目录下,文件名为 ...
- logback 常用配置详解(二) appender
详细整理了logback常用配置 不是官网手册的翻译版,而是使用总结,旨在更快更透彻的理解其配置 logback 简介 logback常用配置详解(一)<configuration> an ...
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- logback 常用配置详解appender
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- nginx常用配置详解
一.nginx配置文件结构: ... #全局块 events { #events块 ...} http #http块{ ... #http全局块 server #server块 { ... #serv ...
- Spring框架深入(四)--SpringMVC配置详解
一.SpringMVC web模型 二.@RequestMapping参数说明 1.value:定义处理方法的请求的URL地址: 2.method:定义处理的方法的http method类型,如GET ...
- springboot核心配置文件 application.properties 或者 yml 常用配置详解
properties 文件: properties文件 是以KV格式存在的, 字符集 默认为 iso-8859-1 如何需要输入中文 需更改字符集utf-8 备注以 # 开头. 常 ...
最新文章
- Hyper-V 2节点集群高可用的限制
- android加固多渠道,Android 多渠道打包(使用友盟统计,结合360加固宝进行多渠道打包)...
- Android第三十一期 - 市面上所有引导页的效果
- 《图解密码技术》分组密码(1) 概览
- set / ... 去重的方法
- 《线性代数的几何意义》笔记(1)
- git重命名远程仓库名字 同步fork代码
- 重新打包mysql数据库文件_服务器每天早上备份一次 MySQL 数据库并自动打包,同时删除 5 天前的备份文件...
- 微软操作系统 Windows Server 2012 R2 官方原版镜像-转载
- 一代、二代、三代测序技术原理与比较
- 微信公众号发红包功能,现金红包、裂变红包接口
- mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
- 百度地图实现marker显示数字
- 巧用快捷键轻松设置Eexel单元格格式(转)
- 随遇而安也是一种选择
- 联想服务器td340安装精简版win10
- 火爆美国却突遇警告:“变脸应用FaceApp是俄国人搞的,大家别用了”
- Python实现识别多个条码/二维码(一)
- 优盘显示需要格式化,怎么恢复正常?
- 计算机组成原理-chp4-指令系统
热门文章
- 双绞线是计算机网络的一种通信线路吗,计算机网络环境的信道传输技术分析
- 董东 java_Java面向对象程序设计
- android profiler 简书,使用AndroidStudio提供的Android Profiler工具和mat进行内存泄漏分析...
- mysql的优化之table_open_cache 篇_mysql性能优化之table_open_cache
- 线性表List的基本创建
- JS 缓存 设置临时缓存和长期缓存 sessionStorage localStorage
- shell编程--case判断
- Uva 10074【递推dp】
- CLion 2017 注册码
- java学习笔记-java中运算符号的优先顺序