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

web项目中 集合Spring

问题:

如果将

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

HelloService helloService = (HelloService) applicationContext.getBean("helloService");

helloService.sayHello();

直接放入Servlet ,造成每次访问都会加载Spring配置文件,都会创建Spring容器环境 (性能问题)

如何确保Spring加载代码 只执行一次??

   ServletContextListener , 启动服务器加载Spring环境,只需要将加载容器 保存ServletContext 范围

WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
 HelloService helloService = (HelloService) applicationContext.getBean("helloService");

helloService.sayHello();

1、导入:

?spring-beans-3.2.0.RELEASE.jar

?spring-context-3.2.0.RELEASE.jar

?spring-core-3.2.0.RELEASE.jar

?spring-expression-3.2.0.RELEASE.jar

?spring-web-3.2.0.RELEASE.jar

?com.springsource.org.apache.commons.logging-1.1.1.jar

?com.springsource.org.apache.log4j-1.2.15.jar

2、配置web.xml

public class ContextLoaderListener extends ContextLoader implements ServletContextListener

 1   <!-- 注册Spring 监听器 -->
 2    <listener>
 3       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 4   </listener>
 5
 6   <!-- 加载配置文件默认 WEB-INF/applicationContext.xml -->
 7   <context-param>
 8       <param-name>contextConfigLocation</param-name>
 9       <param-value>classpath:applicationContext.xml</param-value>
10   </context-param>
11
12    <!--配置Servlet-->
13   <servlet>
14       <servlet-name>HelloServlet</servlet-name>
15       <servlet-class>cn.itcast.web.HelloServlet</servlet-class>
16   </servlet>
17
18   <servlet-mapping>
19       <servlet-name>HelloServlet</servlet-name>
20       <url-pattern>/hello</url-pattern>
21   </servlet-mapping>

3、编写测试代码

HelloService.java

1 public class HelloService {
2     public void sayHello(){
3         System.out.println("hello spring web!!!");
4     }
5 }

HelloServlet.java

 1 public class HelloServlet extends HttpServlet {
 2     @Override
 3     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 4             throws ServletException, IOException {
 5
 6         //调用HelloService  每次都会加载 applicationContext.xml文件
 7 //        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
 8 //        HelloService helloService = (HelloService) applicationContext.getBean("helloService");
 9 //        helloService.sayHello();
10
11
12         // 从ServletContext 范围获得Spring 上下文
13
14         // 第一种
15         // WebApplicationContext applicationContext = (WebApplicationContext)
16         // getServletContext()
17         // .getAttribute(
18         // WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
19
20         // 第二种
21         WebApplicationContext applicationContext = WebApplicationContextUtils
22                 .getWebApplicationContext(getServletContext());
23
24         HelloService helloService = (HelloService) applicationContext
25                 .getBean("helloService");
26         helloService.sayHello();
27
28     }
29
30     @Override
31     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
32             throws ServletException, IOException {
33         // TODO Auto-generated method stub
34         super.doPost(req, resp);
35     }
36 }

4、applicationContext.xml

1 <bean id="helloService" class="cn.itcast.service.HelloService"></bean>

5、测试:

http://localhost:8080/spring_web/hello

使用junit4测试Spring

在上面jar包基础上加上:spring-test-3.2.0.RELEASE.jar

可以复用上面的,Helloservice.java

测试代码:

 1 // 测试Spring
 2 @RunWith(SpringJUnit4ClassRunner.class)
 3 // 集成插件类
 4 @ContextConfiguration(locations = "classpath:applicationContext.xml")
 5 // 加载配置文件
 6 public class SpringTest {
 7
 8     @Autowired
 9     private HelloService helloService;
10
11     @Test
12     public void demo() {
13         helloService.sayHello();
14     }
15
16     @Test
17     // 没有使用Spring 测试 插件写法
18     public void demo1() {
19         ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
20                 "applicationContext.xml");
21         HelloService helloService = (HelloService) applicationContext
22                 .getBean("helloService");
23         helloService.sayHello();
24     }
25 }
时间: 2024-12-21 11:49:09

web项目中 集合Spring&使用junit4测试Spring的相关文章

使用junit4测试spring项目中service方法

使用junit4测试项目中service方法 1 import java.util.HashMap; 2 import java.util.List; 3 import java.util.Map; 4 5 import javax.annotation.Resource; 6 7 import org.junit.Test; 8 import org.junit.runner.RunWith; 9 import org.springframework.test.context.ContextC

06_在web项目中集成Spring

在web项目中集成Spring 一.使用Servlet进行集成测试 1.直接在Servlet 加载Spring 配置文件 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); HelloService helloService = (HelloService) applicationContext.getBean("helloS

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

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

在web项目中使用cxf开发webservice,包含spring支持

本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient等等.以前也多次研究过,上网搜过很多别人的例子来看,写过代码下来,但没有总结过,少废话,上干货. 1. 到cxf的官网下载jar包.我用的是以前下载下来的apache-cxf-2.7.6.zip,并非最新版本.下载完成后,解压后,目录结构如下左图: 打开其中的samples文件夹,其内包含了很多例子

在普通WEB项目中使用Spring

Spring是一个对象容器,帮助我们管理项目中的对象,那么在web项目中哪些对象应该交给Spring管理呢? 项目中涉及的对象 ? 我们回顾一下WEB项目中涉及的对象 Servlet Request Response Session Service DAO POJO 分析 我们在学习IOC容器时知道,Spring可以帮助我们管理原来需要自己创建管理的对象,如果一个对象原来就不需要我们自行管理其的创建和声明周期的话,那么该对象也就不需要交给Spring管理 由此来看,上述对象中只有Service,

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&

在java web项目中集成webservice

公司要求在项目中加入webservice服务,因为项目中使用了spring框架,所以在这里使用与spring兼容性较好的cxf来实现 cxf所需jar包 spring的jar包就不贴了 一:创建webservice服务器 1)创建一个服务接口 package com.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IHelloWorld { public S

Java 容器在实际web项目中应用

前言:在java开发中我们离不开集合数组等,在java中有个专有名词:"容器" ,下面会结合Thinking in Java的知识和实际开发中业务场景讲述一下容器在Web项目中的用法.可结合图片代码了解Java中的容器 备注 :这个地方 ,参考于朝向远方的博客Java容器详解,既然前人总结的这么好,我就直接拿来用,在这里更注重在实际开发中的例子,感谢那些总结的前辈们,辛苦了. 简单的数组例子 Thinking in Java 中并没有把数组归为Java的容器,实际上数组的确不是Java

JAVA WEB项目中各种路径的获取

JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在servlet的init方法里 String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径 例如 :E:\eclipseM9\workspace\tree\ tree是我web项目的根目录 2.你也可以随时在任意的cla