浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml
在搭建 spring mvc 的框架时,会有2个配置文件必不可少: spring-servlet.xml 和applicationContext.xml。第一次接触spring mvc的工程师可能会对这2个文件的感到疑惑, 下面会对这个两个文件的配置功能展开阐述:
spring-servlet.xml
如何加载?
顾名思义,是基于servlet的,如果在一个工程A(下面全部命名为A)的结构是类似于web,service,dao的分层,此配置作用于web层会更合理,在工程A的web.xml文件中,如下配置:

由于URL配置是以action结尾的表达式,所以在应用启动后(这里注意是应用启动后) ,只要符合此表达式的URL去访问的应用时,此servlet-class会去响应,同时加载此spring-servlet.xml文件,进行注册、初始化bean等的系列操作。
如果想要在应用启动时,servlet即进行响应,可以配置<load-on-startup>1</load-on-startup>
对 load-on-startup 英文原文解释如下:
Servlet specification:
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its init() called) on the startup of the web application. The optional contents of these element must be an integer indicating the order in which the servlet should be loaded. If the value is a negative integer, or the element is not present, the container is free to load the servlet whenever it chooses. If the value is a positive integer or 0, the container must load and initialize the servlet as the application is deployed. The container must guarantee that servlets marked with lower integers are loaded before servlets marked with higher integers. The container may choose the order of loading of servlets with the same load-on-start-up value.
翻译:
load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
它的值必须是一个整数,表示servlet应该被载入的顺序
当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
当值相同时,容器就会自己选择顺序来加载。
作用?
可以对视图文件(如freemarker、jsp等)进行初始化操作,如定义视图文件的位置,定义全局变量、定义拦截器等等。
applicationContext.xml
如何加载?
顾名思义,是应用上下文、全局的配置。其启动配置一般在web.xml的Listener节点中, 注意Listener和servlet的区别,加载优先级是Listener大于servlet,同时两者性质也不同,Listener的操作是对一个事件对象的监听,而servlet和filter比较类似,是对于URL的一种匹配拦截。

如上图配置,默认去找classpath下的application-Context.xml,这是一种约定优于配置的概念
同样也可以配置在context-param的节点中进行配置,如下图:

加载优先级 : context-param 是大于listener 大于 filter 大于 servlet的
组件扫描最佳配置
在spring-servlet.xml中配置:
<!-- Spring MVC 扫描包路径配置 -->
<context:component-scan base-package="com.a.b"
use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
在applicationContext.xml中配置:
<!-- 注册相关后置处理器,扫描包路径下的注解配置 -->
<context:component-scan base-package="com.a.b">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
参考资料 http://blog.csdn.net/lovesomnus/article/details/51473740
浅谈配置文件:spring-servlet.xml(spring-mvc.xml) 与 applicationContext.xml的更多相关文章
- 浅谈WebService之JAX-RS与spring整合
背景:首先谈一下webservice: 1.Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序, 可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发 ...
- Spring框架找不到 applicationContext.xml文件,可能是由于applicationContext.xml文件的路径没有放在根目录下造成的
Spring框架找不到 applicationContext.xml文件,可能是由于applicationContext.xml文件的路径没有放在根目录下造成的
- spring controller中@Value取不到applicationContext.xml中加载配置文件的问题
原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个 ...
- 浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程
前言 最近开始了SpringBoot相关知识的学习,作为为目前比较流行.用的比较广的Spring框架,是每一个Java学习者及从业者都会接触到一个知识点.作为Spring框架项目,肯定少不了与数据库持 ...
- 浅谈Tomcat和Servlet
本文浅谈下对Tomcat和Servlet总体的理解,初学时有用过一段时间,但当时疲于应对如何xml配置和使用,对他们的理解就像是一个黑匣子.现在回顾一下帮助自己加深网络的理解.开始还是先推荐我看的文章 ...
- spring +servlet 与 spring MVC
spring serlvetSpring框架中context-param与servlet中init-param的contextConfigLocation的区别https://blog.csdn.ne ...
- 浅谈服务架构“五脏六腑”之Spring Cloud
本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: 第一小节「服务架构」旨在说明的包括两点,一服务架构是什么及其必要性:二是服务架构的基本组成.为什么第一节写服务架构而不 ...
- 浅谈jpa、hibernate与spring data jpa三者之间的关系
1.解释hibernate之前先了解下什么是orm,orm是object relation mapping,即对象关系映射,object可以理解成java实体类Entity,relation是关系型数 ...
- 浅谈我眼中的ASP.NET MVC
坦白地说,学习MVC是前一段时间的事情了.但是,我当时虽然也实践过,却也不能很好的说出个所以然来.因此,也 一直没敢写点什么文字总结.最近,开始学习EF,也同时在使用MVC来结合EF实践增删改查.慢慢 ...
随机推荐
- Linux中线程使用详解
线程与进程为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什么的系统应该选用多线程?我们首先必须回答这些问题. 使用多线程的理由之一是和进程相比,它是一种非常"节俭&qu ...
- deferred rendering with msaa
https://docs.nvidia.com/gameworks/content/gameworkslibrary/graphicssamples/d3d_samples/antialiasedde ...
- [NM 状态机2] Container状态机详解
概述 前面已经分析了RM的状态机,接下来将分析NM的状态机,NM状态机包括Container,Application,LocalizedResource三个,其中Container相对较复杂.现在我们 ...
- Appium获取安卓页面toast(java版)
toast是什么?安卓页面上弹出的提示框,这种提示框出现在屏幕上大概3秒左右就会消失.用uiautomatorviewer根本定位不到. 准备环境,Appium版本需要1.6.3以上. 代码 初始化设 ...
- 转:Android 签名验证机制(相当不错,强烈推荐)
转: http://riusksk.blogbus.com/logs/272154406.html Android应用签名验证过程中,满足以下条件才能安装应用: 1.SHA-1(除META-INF目 ...
- Quartz JobStore管理Job
Quartz提供了RAMJobStore和JDBC JobStore两种方式用来Job,RAMJobStore将Job任务存入内存中,速度快:JobStore采用数据库的方式管理中,本文介绍JobSt ...
- Unity Mono foreach BUG性能测试
# 环境 - Unity 4.6.4 / Windows # 测试代码 # 结果数据 # 结论 foreach存在bug,会导致GC,并且效率低下: 使用GetEnumerator代替,没有GC,并且 ...
- JSP语法学习笔记
1.修改JSP页面模版:找到MyEclips安装目录,搜索“Jsp.vtl”,找到该文件修改编码,以及一些不需要用到的代码. 2.查找项目生成的Servlet文件路径:查看当前项目父级目录搜索 .me ...
- Ubuntu 11.04 安装后要做的20件事情
转自:http://www.cnbeta.com/articles/141137.htm #1 不喜欢Unity? 切换到Ubuntu gnome 经典桌面 注销unity桌面环境,然后选择登录环境为 ...
- JAVA中的Session和Cookie【转】
一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于才服务器端保持状态的 ...