在web项目中集成Spring

一、使用Servlet进行集成测试

1.直接在Servlet 加载Spring 配置文件

  1. ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  2. HelloService helloService = (HelloService) applicationContext.getBean("helloService");
  3. helloService.sayHello();
 

问题: 每次请求都会加载Spring环境,初始化所有Bean ,性能问题 !!!

解决方案一: 将代码放入Servlet init 中 , 无法保证所有Servlet都能使用 ApplicationContext

解决方案二: ServletContext,在tomcat启动时, 加载Spring配置文件,获得对象 ,放入ServletContext

* ServletContextListener

2.导入spring-web.jar

保存 ContextLoaderListener 完成在Servlet初始化阶段,加载Spring配置文件,将工厂对象放入 ServletContext

3.配置web.xml

  1. <listener>
  2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  3. </listener>
* 默认读取 WEB-INF/applicationContext.xml 

配置全局参数 contextConfigLocation 指定 配置文件位置

  1. <context-param>
  2.     <param-name>contextConfigLocation</param-name>
  3.     <param-value>classpath:applicationContext.xml</param-value>
  4. </context-param>
 

4.修改Servlet代码

从ServletContext中获得 Spring工厂

第一种:

  1. WebApplicationContext applicationContext = (WebApplicationContext) getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
 

第二种:

  1. WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
 
**********************************************************************************完整代码*********************************************************************************
1)编写service(bean):
  1. publicclassHelloService{
  2. publicvoid sayHello(){
  3. System.out.println("hello,Spring web");
  4. }
  5. }
2)注册bean:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <beanid="helloService"class="cn.itcast.service.HelloService"></bean>
  7. </beans>
3)配置web.xml文件
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-appversion="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <!-- 配置Spring 监听器 -->
  8. <listener>
  9. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  10. </listener>
  11. <!-- 配置Spring配置文件所在位置 -->
  12. <context-param>
  13. <param-name>contextConfigLocation</param-name>
  14. <param-value>classpath:applicationContext.xml</param-value>
  15. </context-param>
  16. <display-name></display-name>
  17. <servlet>
  18. <servlet-name>HelloServlet</servlet-name>
  19. <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>
  20. </servlet>
  21. <servlet-mapping>
  22. <servlet-name>HelloServlet</servlet-name>
  23. <url-pattern>/hello</url-pattern>
  24. </servlet-mapping>
  25. <welcome-file-list>
  26. <welcome-file>index.jsp</welcome-file>
  27. </welcome-file-list>
  28. </web-app>
4)编写servlet(测试)
  1. publicclassHelloServletextendsHttpServlet{
  2. publicvoid doGet(HttpServletRequest request,HttpServletResponse response)
  3. throwsServletException,IOException{
  4. WebApplicationContext applicationContext =WebApplicationContextUtils.getWebApplicationContext(getServletContext());
  5. HelloService helloService =(HelloService) applicationContext.getBean("helloService");
  6. helloService.sayHello();
  7. }
  8. publicvoid doPost(HttpServletRequest request,HttpServletResponse response)
  9. throwsServletException,IOException{
  10. doGet(request, response);
  11. }
  12. }
 

二、Spring 整合 junit4 测试

1、 导入spring-test.jar

2、 编写测试用例

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = "classpath:applicationContext.xml") // 指定配置文件位置
  3. public class HelloServiceTest {
  4.     @Autowired
  5.     private HelloService helloService; // 注入需要测试对象
  6.     @Test
  7.     // 测试
  8.     public void demo2() {
  9.         helloService.sayHello(); // 调用测试方法
  10.     }
  11. }
 

06_在web项目中集成Spring的更多相关文章

  1. Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

    本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...

  2. web项目中 集合Spring&使用junit4测试Spring

    web项目中 集合Spring 问题: 如果将 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(& ...

  3. 如何在web项目中配置Spring的Ioc容器

    在web项目中配置Spring的Ioc容器其实就是创建web应用的上下文(WebApplicationContext) 自定义要使用的IoC容器而不使用默认的XmlApplicationContext ...

  4. Axis2在Web项目中整合Spring

    一.说明: 上一篇说了Axis2与Web项目的整合(详情 :Axis2与Web项目整合)过程,如果说在Web项目中使用了Spring框架,那么又改如何进行Axis2相关的配置操作呢? 二.Axis2 ...

  5. web项目中获取spring的bean对象

    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,如何在程序中不通过注解的形式(@Resource.@Autowired)获取Spring配置的bean呢? Bean工厂(c ...

  6. 如何在Web项目中配置Spring MVC

    要使用Spring MVC需要在Web项目配置文件中web.xml中配置Spring MVC的前端控制器DispatchServlet <servlet> <servlet-name ...

  7. 在普通WEB项目中使用Spring

    Spring是一个对象容器,帮助我们管理项目中的对象,那么在web项目中哪些对象应该交给Spring管理呢? 项目中涉及的对象 ​ 我们回顾一下WEB项目中涉及的对象 Servlet Request ...

  8. Java Web学习系列——Maven Web项目中集成使用Spring

    参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...

  9. java web项目中引入spring

    自己动手实践了一次,发生中间出了一下问题,现整理出来,供参考. Step1: 新建一个java web项目 Step2:下载spring的jar包http://repo.spring.io/libs- ...

随机推荐

  1. jQuery学习之prop和attr的区别

    1.attr() :默认保存的是浏览器的初始值  prop()保存的是更新的值 2.下面的是首用法,但是.attr()方法可以运行在所有的attributes情况下. 注意:一些DOM元素的prope ...

  2. 使用node-webkit开发exe窗口程序

    首发:个人博客,更新&纠错&回复 ====关于原生程序与壳中程序的议论begin==== 在所有用户windows机器上都能直接跑的程序,如果不采用微软系的语言,如VB,C++,C#等 ...

  3. FTP小教程

    1.下载文件:http://pan.baidu.com/s/1gd3Uo63 2. 右键点击“传送”,就会把本地的文件传送到服务器现在打开的目录

  4. 为 Macbook 增加锁屏热键技巧

    第一步,找到“系统偏好设置”下的“安全性与隐私”,在“通用”页里勾上“进入睡眠或开始屏幕保护程序后立即要求输入密码”. 第二步,要用快捷键启动屏幕保护程序,相对复杂一点.在“应用程序”里找到“Auto ...

  5. org.apache.cxf.interceptor.Fault: No such operation

    webservice错误,访问的时候加后缀wsdl即可,如:http://localhost:9000/HelloWorld?wsdl

  6. ServerMediaSession::generateSDPDescription分析

    //顾名思义,就是用来生成sdp描述信息的. char* ServerMediaSession::generateSDPDescription() { //获取本地IP地址 AddressString ...

  7. vscode使用php调试

    1:首先查看是否安装xdebug扩展 打开终端  ➜ ~ php -vPHP 5.6.24 (cli) (built: Jul 21 2016 14:27:54) Copyright (c) 1997 ...

  8. easyui enableFilter combobox级联 combotree

    //网格过滤         function datagridFilter(dg){             dg.datagrid('enableFilter');             dg. ...

  9. poj1703 Find them, Catch them

    并查集. 这题错了不少次才过的. 分析见代码. http://poj.org/problem?id=1703 #include <cstdio> #include <cstring& ...

  10. The shortest problem

    The shortest problem Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...