使用spring等框架的web程序在Tomcat下的启动顺序及思路理清
大牛请绕过,此文仅针对自己小白水平,对web程序的启动流程做个清晰的回顾。
一.使用spring等框架的web程序在Tomcat下的启动流程
1)Tomcat是根据web.xml来启动的。首先到web.xml
2)web.xml中负责启动spring和spring mvc。对应的启动配置文件分别是
启动spring mvc,并进行所有资源路径映射
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/cfg/springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
启动spring,通过ContextLoaderListener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/cfg/spring.xml</param-value>
</context-param>
3)spring中对一些orm框架的启动,包括Mybatis/hibernate。orm框架的启动基本都是通过sqlsessionFactory bean来启动的。
并配置各种bean到ioc容器中。包括datasource等。
4)web应用程序中,spring相当于程序运行的平台,spring对整个程序提高供ioc支持和aop支持。
spring提供注解如@service @repository @component将各种类注册到ioc容器中。通过设置scan package的方式,spring在启动时候会扫描包下的所有注解,并将它们注册到ioc容器中。并针对@autowired @resource,将一些bean从ioc容器中获取填充到bean的构造属性中。
spring会自动扫描如下包中的注解:
<context:component-scan base-package=”pagkage1[,pagkage2,…,pagkageN]”/>
以上可以看出spring所有的bean注入都是在spring.xml中配置的,所有的bean注入都在spring.xml中配置的。
@autowired @resource只针对于类的成员变量,不针对方法里的局部变量。
注:正是spring的ioc支持了controller层注入service,service注入dao。打通了各层之间的桥梁,省去了原来的new service(),new Dao()的方法。
问答
1.使用spring ioc有什么好处?
答:网上有很多介绍使用Spring IOC容器的好处的文章,我看到的主要有两点,
1.方便测试,当需要测试的类依赖其他的类时,可以为依赖的类做个mock,然后注入进来。
2.方便维护及升级,当某个类需要修改实现时,只要接口没变,则无需修改源代码,重写一个实现类,修改下配置即可。
3.默认下,IOC容器管理的bean都是单例的,不会被gc掉。
4.spring提倡面向接口开发,因此在servcie里面的dao直接是接口就可以了。这样有助于解耦。(测试等等)。。
如果不用spring,要么自己new daoimpl,就面向具体了,如果还想抽象,就必须自己写工厂——其实spring就是一个工厂IOC。实现类似的作用。
其实,面向抽象是实现和接口分离,对于多数的项目,实现大量变化的机会不是很大,因此直接面向具体(省略掉dao接口等)是我个人推荐的做法。
spring工厂对其中的对象的生命周期,作用范围都有很明确的定义,很容易使用,如果自己做这么一套,只怕没这么好。
第三,spring对ioc管理的对象,可以做很多增强,比如aop,代理等等。
5.感觉AOP最有用了。
2.spring是怎样支持面向接口编程的?
由于依赖于接口,可以通过依赖注入随时替换DAO接口的实现类,而应用程序完全不用了解接口与底层数据库操作细节。
应用程序----调用-----》DAO接口《---实现--DAO接口实现类----操作------》数据库
使用spring等框架的web程序在Tomcat下的启动顺序及思路理清的更多相关文章
- spring框架等web程序在tomcat下的启动顺序
http://www.cnblogs.com/panxuejun/p/5847774.html
- Spring MVC + Spring + Mybitis开发Java Web程序基础
Spring MVC + Spring + Mybitis是除了SSH外的另外一种常见的web框架组合. Java web开发和普通的Java应用程序开发是不太一样的,下面是一个Java web开发在 ...
- linux部署web项目到tomcat下(图文详解)
大家好,相信不少初学者不知道如何将windows eclipse下开发的web项目部署到linux系统的tomcat下,今天我将图文并茂教大家 首先呢,比如我新建一个web项目,打开eclipse编辑 ...
- IDEA创建一个Spring MVC 框架Java Web项目,Gradle构建
注:此篇有些细节没写出,此文主要写重要的环节和需要注意的地方,轻喷 新建项目 选择Gradle , 勾选java 和 web.之后就是设定项目路径和名称,这里就不啰嗦了. build.gradle文件 ...
- Spring MVC框架处理Web请求的基本流程
- IDEA开发web程序配置Tomcat
1.下载zip版的Tomcat 7,并解压2.在IDEA中配置Tomcat 7 在idea中的Settings(Ctrl+Alt+s)(或者点击图标 ) 弹出窗口左上过滤栏中输入“Applicatio ...
- 发布maven的web项目,tomcat显示已启动,但是访问出错
sts中如果是maven的web工程,一定要先进行maven install,再发布工程,否则不会出任何错误,tomcat还访问不了
- Mybatis在Spring环境下的启动顺序
主要看三个类: mybatis-spring-1.2.2.jar包 -> org.mybatis.spring.SqlSessionFactoryBean mybatis-3.2.6.jar包 ...
- Java程序读取tomcat下的properties配置文件
代码如下: //找到tomcat/etc/wx文件夹 private static String getPropFolderPath() { /* Properties p = Syst ...
随机推荐
- Linq学习笔记---Linq to Sql之where
http://kb.cnblogs.com/page/42465/ Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断 ...
- 在getView方法产生给用户item的视图以及数据
在getView方法产生给用户item的视图以及数据
- C++的那些事:容器和泛型算法
一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.q ...
- ZOJ3362 Beer Problem(最小费用任意流)
题目大概说有n个城市,由m条无向边相连,每条边每天最多运送cap桶酒且其运送一桶的花费是cost.现在从1号城市开始出发运酒,供应到2到n号城市,这些城市的收购单价是price,问最大的盈利是多少. ...
- HDU3138 Coconuts(最小割)
题目大概说有n个人每个人各有一个信仰0或1,他们中有m对朋友关系,现在要对一件事投票,可以为了和信仰不同的朋友一样而违背自己的信仰和朋友投一样的票,问违背信仰的人数加上和朋友投票结果不同的人数总和的最 ...
- Assets/Sciprts/GameSciprt.js(97,46): BCE0044: expecting :, found ','.
function BuildDeck() { var totalRobots:int=4; var card:Object; var i:int; for(i=0;i<totalRobots;i ...
- centos 安装网络错误
yum install vnc-server 提示安装成功 rpm -q vnc-server 返回 package vnc-server is not installed 然而再重新安装时 yu ...
- WP7.1 应用程序发布到Marketplace
从8月22起Windows Phone marketplace可以提交7.1 sdk开发的应用了,尽管提交页面和方式与7.0是同一个,但是还是会出现一些问题.并且在提交之前也注意一些问题. 7.0 应 ...
- Get the image file(s) some informations,Including the Make,Model,Date/Time,etc
This is a blog about how to get the image file(s) some informations.Including the Make,Model,Date/Ti ...
- Java正则表达式教程
地址:http://www.java3z.com/cwbwebhome/article/article8/Regex/Java.Regex.Tutorial.html#reg0_1