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
aaarticlea/png;base64,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" alt="" />
   <!-- 注册Spring 监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- 加载配置文件默认 WEB-INF/applicationContext.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!--配置Servlet-->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>cn.itcast.web.HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

3、编写测试代码

HelloService.java

 public class HelloService {
public void sayHello(){
System.out.println("hello spring web!!!");
}
}

aaarticlea/png;base64,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" alt="" />

HelloServlet.java

 public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { //调用HelloService 每次都会加载 applicationContext.xml文件
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// HelloService helloService = (HelloService) applicationContext.getBean("helloService");
// helloService.sayHello(); // 从ServletContext 范围获得Spring 上下文 // 第一种
// WebApplicationContext applicationContext = (WebApplicationContext)
// getServletContext()
// .getAttribute(
// WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); // 第二种
WebApplicationContext applicationContext = WebApplicationContextUtils
.getWebApplicationContext(getServletContext()); HelloService helloService = (HelloService) applicationContext
.getBean("helloService");
helloService.sayHello(); } @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}

4、applicationContext.xml

 <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
测试代码:
 // 测试Spring
@RunWith(SpringJUnit4ClassRunner.class)
// 集成插件类
@ContextConfiguration(locations = "classpath:applicationContext.xml")
// 加载配置文件
public class SpringTest { @Autowired
private HelloService helloService; @Test
public void demo() {
helloService.sayHello();
} @Test
// 没有使用Spring 测试 插件写法
public void demo1() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
"applicationContext.xml");
HelloService helloService = (HelloService) applicationContext
.getBean("helloService");
helloService.sayHello();
}
}
 
上一篇:[Mysql] MySQL配置文件my.cnf的理解


下一篇:python学习小结1:for循环控制语句