搭建简易的Spring测试框架-最新版本
快速搭建一个SpringBoot项目(纯小白搭建教程)
快速搭建⼀个SpringBoot项⽬(纯⼩⽩搭建教程)⽬录零、环境介绍⼀、⼿把⼿创建1.创建步骤2.启动类和测试编写2.1 项⽬结构2.2 创建启动类DemoApplication2.3 测试⼆、依赖⼯具创建零、环境介绍环境:jdk1.8及以上,maven,Win10,IDEA,⽹络⼀、⼿把⼿创建请求创建在启动类所在的包⾥⾯,才能顺利启动1.创建步骤看图,有⼿就⾏之后得到的就是⼀个maven项⽬,⽬录结构如下:之后添加依赖,springboot的核⼼依赖。
SpringBoot提供了⼀个名为spring-boot-starter-parent的构件,⾥⾯已经对各种常⽤依赖(并⾮全部)的版本进⾏了管理,我们的项⽬需要以这个项⽬为⽗⼯程,这样我们就不⽤操⼼依赖的版本问题了,需要什么依赖,直接引⼊坐标即可!<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 https:///xsd/maven-4.0.0.xsd"><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><modelVersion>4.0.0</modelVersion><!--本机JDK版本--><properties><java.version>11</java.version></properties><!--⽗类依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.4</version><relativePath/> <!-- lookup parent from repository --></parent><!--web启动器依赖--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>需要注意的是,我们并没有在这⾥指定版本信息。
最新版本Struts2.3.12+Spring3.2.2+Hibernate4.2.0框架配置详细步骤
SSH框架搭建Struts2.3.12+Spring3.2.2+Hibernate4.2.0编号:SSH-S2-S3-H4版本:V1.1级别:公开编写时间:2013-03-18目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建Struts2 (2)2.1 搭建所需jar包 (2)2.2 整合步骤 (2)2.2.1 创建项目 (2)2.2.2 导入jar包 (2)2.2.3 配置web.xml (4)2.2.4 创建web (4)2.2.5 创建jsp页面 (5)2.2.6 配置struts.xml (6)2.2.7 配置Tomcat (6)2.2.8 部署项目 (7)2.3 测试 (8)2.3.1 启动Tomcat (10)2.3.2 测试Tomcat (10)2.3.3 测试Struts (11)3 整合Spring3 (12)3.1 整合所需jar包 (12)3.2 整合步骤 (12)3.2.1 导入jar包 (12)3.2.2 配置web.xml (12)3.2.3 配置struts.xml (13)3.2.4 配置spring.xml (13)3.3 测试 (14)3.3.1 启动Tomcat (14)3.3.2 测试登录 (14)4 整合Hibernate4 (15)4.1 整合所需jar包 (15)4.2 整合步骤 (15)4.2.1 导入jar包 (15)4.2.2 创建数据库ccc (15)4.2.3 创建对象User (16)4.2.4 生成映射文件User.hbm.xml (17)4.2.5 创建dao (18)4.2.6 创建service (19)4.2.7 创建web (20)4.2.8 配置jdbc.properties (21)4.2.9 配置db.xml (22)4.2.10 配置spring.xml (24)4.2.11 配置struts.xml (24)4.3 测试 (25)4.3.1 启动Tomcat (25)4.3.2 测试登录 (25)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSH框架,也是实际应用中比较全面的基础框架,用于指导SSH框架初学者学习搭建SSH框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。
Struct2、Hibernate3、Spring3框架搭建实战
Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。
整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。
⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。
第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。
建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。
SpringMVC框架搭建流程(完整详细版)
SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。
创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。
java spring框架教程 pdf
java spring框架教程 pdfSpring框架是一个开源的Java开发框架,广泛应用于企业级应用程序的开发中。
它提供了一套全面的解决方案,使开发者能够轻松构建可扩展的Java应用程序。
首先,Spring框架提供了一种轻量级的、非侵入式的编程模型,通过使用IOC(控制反转)和AOP(面向切面编程)的概念,将应用程序的各个组件解耦,并且能够更加灵活地管理和配置这些组件。
IOC将对象的创建和依赖注入交给了框架来完成,而不是由开发者手动管理。
AOP可以在不改变原有代码的情况下,通过额外的横切关注点来实现一些跨越模块的功能。
其次,Spring框架还提供了一套强大的MVC(模型-视图-控制器)架构,帮助开发者构建Web应用程序。
MVC模式将应用程序的业务逻辑、数据和显示逻辑分离开来,使代码更加模块化和可维护。
Spring MVC通过提供注解和XML配置的方式,使开发者能够很容易地定义请求处理方法、URL映射和视图解析器等,并且还支持数据绑定、表单验证和文件上传等功能。
此外,Spring框架还集成了一系列其他的开源框架和类库,如Hibernate、MyBatis、JPA、JDBCTemplate等,以便于在应用程序中使用。
它们可以帮助开发者更加高效地操作数据库,简化开发流程。
除了以上一些主要的特性,Spring框架还提供了一些其他的功能,如事务管理、安全性、消息队列、调度器等。
这些功能能够满足企业级应用程序的各种需求,而且通过Spring的统一配置管理,可以很方便地进行集中管理。
总之,Spring框架是一套非常全面和强大的Java开发框架。
它的出现让Java开发者能够更加专注于业务逻辑的实现,而无需关心底层的复杂性。
因此,学习和掌握Spring框架对于Java开发者来说是非常重要的。
希望这份教程能够帮助读者快速入门和深入理解Spring框架的核心概念和用法,进而提升开发效率和应用程序的质量。
综上所述,Spring框架是一个功能强大且广泛应用的Java开发框架,它提供了一套全面的解决方案,能够帮助开发者轻松构建可扩展的Java应用程序。
实用的软件测试框架
实用的软件测试框架概述软件测试是确保软件质量的关键步骤,而软件测试框架则是组织和管理测试过程的重要工具。
本文将介绍一些实用的软件测试框架,这些框架在简单性和可靠性方面具有优势,可以帮助开发团队提高测试效率和软件质量。
1. 单元测试框架单元测试是对软件中最小可测试单元进行测试的过程。
以下是几个实用的单元测试框架:- JUnit:适用于Java开发,是最常用的单元测试框架之一。
它提供了丰富的断言和测试注释,可以方便地编写和执行单元测试。
JUnit:适用于Java开发,是最常用的单元测试框架之一。
它提供了丰富的断言和测试注释,可以方便地编写和执行单元测试。
- pytest:适用于Python开发,具有简洁的语法和丰富的插件生态系统。
它可以轻松地运行单元测试、集成测试和功能测试。
pytest:适用于Python开发,具有简洁的语法和丰富的插件生态系统。
它可以轻松地运行单元测试、集成测试和功能测试。
- Mocha:适用于JavaScript开发,支持异步测试和多种断言库。
它可以在浏览器和Node.js环境中运行测试。
Mocha:适用于JavaScript开发,支持异步测试和多种断言库。
它可以在浏览器和Node.js环境中运行测试。
2. 集成测试框架集成测试是验证不同模块或组件之间的交互是否正确的过程。
以下是几个实用的集成测试框架:- Selenium:用于Web应用程序的自动化测试框架。
它支持多种浏览器和操作系统,并提供了丰富的API和工具,可以模拟用户在浏览器中的操作。
Selenium:用于Web应用程序的自动化测试框架。
它支持多种浏览器和操作系统,并提供了丰富的API和工具,可以模拟用户在浏览器中的操作。
- Cypress:另一个适用于Web应用程序的测试框架,具有简单易用的语法和强大的调试功能。
它可以进行端到端的测试,模拟用户在应用中的各种操作。
Cypress:另一个适用于Web应用程序的测试框架,具有简单易用的语法和强大的调试功能。
Springboot项目搭建(前端到数据库,超详细)
Springboot项⽬搭建(前端到数据库,超详细)下⾯详细谈谈我的第⼀个springboot项⽬搭建,希望会给还在摸索的同学⼀点帮助。
项⽬说明:开发环境:Eclipse 4.42框架:Springboot⼯具:Maven前端:Html、Thymeleaf后台:Java、JPA (Hibernate)数据库:Mysql为什么要搭建Springboot项⽬?教科书式的阐述这⾥就不说了,我就总结为两个词语 “简单、⽅便”。
为了更加清晰的展⽰,现在我⽤⼀个全新的⼯作空间来演⽰springboot项⽬的搭建过程。
【01】创建⼀个简单的maven项⽬(如果Eclipse不⽀持Maven项⽬创建,请先⾃⾏安装Maven,不会问度娘):(1.1)右键单击 --> New --> Other(1.2)输⼊Maven,选中Maven Project,点击Next。
(1.3)勾选 Use default Workspace location,点击Next。
(1.4)选择 maven-archetype-quickstart,点击Next。
⽬中的包名,点击Finish。
(1.6)可以看到,我们的⼯程已经创建成功了。
但貌似现在有⼀些不完美的地⽅需要解决。
(1.7)⼯程创建成功后,可以看到⼜⼀个⼩红叉,虽然不影响程序运⾏,但⾯对有强迫的我们,看着很少难受。
选中⼯程:右键单击--> Maven --> Update Project(1.8)什么都不管,直接点击OK(1.9)奈斯!⼩红叉已经被我们消灭了!【02】加⼊Springboot框架(2.1)我们先双击打开pom.xml⽂件,把不要的东西先⼲掉,最后保留如下所⽰即可:<project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>springboot</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging></project>(2.2)定义⽗类:springboot 所有jar包版本,这⾥为 2.0.5.RELEASE 版本<!-- Spingboot相关jar包版本 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.5.RELEASE</version></parent>(2.3)加⼊springboot核⼼包、和web开发必须的包<!-- 相关jar包 --><dependencies><!-- Springboot核⼼jar包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- web开发包:包含Tomcat和Springmvc --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>(2.4)可以看到,我们项⽬测试类现在还有⼀个⼤红叉,是因为我们刚刚吧把初始的Junit包⼲掉了,现在,我们重新加⼊Junit包。
Java Spring框架的详细使用教程
Java Spring框架的详细使用教程Java Spring框架是一个轻量级的开源框架,用于简化Java应用程序的开发。
它提供了许多功能和组件,能够帮助开发人员快速构建可扩展、可维护的企业级应用程序。
本文将详细介绍Java Spring框架的使用,包括框架的特点、核心概念和常用模块的介绍。
Java Spring框架的特点1. 轻量级:Java Spring框架采用了基于POJO(普通Java对象)的开发模式,不依赖于任何特定的容器或服务器,因此非常轻量级。
2. 面向切面编程(AOP):Java Spring框架支持面向切面编程,可以通过AOP来实现一些横切关注点,如事务管理、日志记录等。
3. 控制反转(IoC):Java Spring框架采用了控制反转的设计模式,将对象的创建、管理和依赖关系的维护交给框架来处理,使得开发人员能够更专注于业务逻辑的实现。
4. 声明式事务管理:Java Spring框架提供了事务管理的功能,可以通过简单的配置来实现声明式的事务管理,而无需编写复杂的事务控制代码。
Java Spring框架的核心概念1. IoC容器:IoC容器是Java Spring框架的核心部分,它负责对象的创建和管理。
开发人员将对象的实例化和依赖关系的维护交给IoC容器来处理,从而实现了对象的解耦和配置的灵活性。
2. Bean:在Java Spring框架中,被IoC容器所管理的对象被称为Bean。
Bean可以通过注解或XML配置的方式进行定义和配置。
3. AOP:面向切面编程是Java Spring框架的一个重要特性,开发人员可以通过AOP将一些横切关注点(如日志、安全、事务等)从业务逻辑中剥离出来,并在需要的时候进行统一的管理。
4. MVC框架:Java Spring框架提供了一个基于MVC(Model-View-Controller)模式的Web框架,通过将请求、处理和响应分离,使得Web应用程序的开发更加模块化和灵活。
快速入门使用SpringBoot进行Java开发
快速入门使用SpringBoot进行Java开发第一章:引言SpringBoot是一个开源的Java开发框架,旨在简化Java应用程序的开发过程。
它基于Spring框架构建,并提供了很多便利的功能和工具,使Java开发变得更加高效和快速。
本章将介绍SpringBoot的背景和特点,并帮助读者建立对SpringBoot的初步认识。
第二章:环境准备在开始使用SpringBoot之前,首先需要准备好相应的开发环境。
本章将介绍如何安装Java开发工具包(JDK)和集成开发环境(IDE),以及如何配置和测试环境,确保开发环境的正常运行。
第三章:快速入门本章将带领读者通过一个简单的示例来快速入门使用SpringBoot进行Java开发。
首先,我们将创建一个空白的SpringBoot项目,并添加必要的依赖。
然后,我们将编写一个简单的控制器类,并配置相应的路由映射。
最后,我们将运行和测试我们的应用程序,确保一切正常。
第四章:Web开发SpringBoot提供了强大且简单易用的Web开发功能,可以轻松构建RESTful API和Web应用程序。
本章将介绍如何使用SpringBoot开发Web应用程序,并演示常见的Web开发技术和实践,如URL映射、HTTP请求处理、数据绑定、表单处理等。
第五章:数据库操作大多数Java应用程序都需要与数据库进行交互,进行数据的读取、写入和修改。
SpringBoot提供了多种数据库访问方式,并且对常见的数据库操作进行了封装和简化。
本章将介绍如何使用SpringBoot进行数据库操作,并演示常用的数据库访问技术,如JDBC、JPA和MyBatis。
第六章:缓存管理在高并发的应用场景下,为了提高系统的性能和响应速度,使用缓存是一个常见且有效的方式。
SpringBoot提供了丰富的缓存管理功能,包括内存缓存、分布式缓存等。
本章将介绍如何使用SpringBoot进行缓存管理,并演示基于Redis的缓存实践。
Spring框架参考文档-5.0.0-中文完整版
Spring框架参考文档-5.0.0-中文完整版AuthorsRod Johnson , Juergen Hoeller , Keith Donald , Colin Sampaleanu , Rob Harrop , Thomas Risberg , Alef Arendsen , Darren Davison , Dmitriy Kopylenko , Mark Pollack , Thierry Templier , Erwin Vervaet , Portia Tung , Ben Hale , Adrian Colyer , John Lewis , Costin Leau , Mark Fisher , Sam Brannen , Ramnivas Laddad , Arjen Poutsma , Chris Beams , Tareq Abedrabbo , Andy Clement , Dave Syer , Oliver Gierke , Rossen Stoyanchev , Phillip Webb , Rob Winch , Brian Clozel , Stephane Nicoll , Sebastien Deleuze版本号:5.0.0.RELEASECopyright ? 2004-2016Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.文档官网:https://docs.spring.io/spring/docs/5.0.0.RELEASE/spring-framework-reference/index.html现在官网的5.0.0已经在2017年9月28日出了release版,为此翻译了5.0.0版本(从4.3.10升级到此版本,如果还在使用4.3.10版本,请看本人的前一个版本),翻译前后历时15天,十多次的修改和校对。
Eclipse使用maven搭建springmvc图文教程
Eclipse使⽤maven搭建springmvc图⽂教程本⽂为⼤家介绍了Eclipse使⽤maven搭建spring mvc的详细步骤,供⼤家参考,具体内容如下1、环境配置a). Java 1.7b). Eclipse lunac). Maven3.2.5d). Spring 4.1.42、创建maven⼯程a). 打开eclipse,file->new->project->Maven->Maven Projectb). 下⼀步c). 选择创建的⼯程为webapp,下⼀步d). 填写项⽬的group id和artifact id。
⼀般情况下,group id写域名的倒序,artifact id写项⽬名称即可。
最后点完成。
e). 最初建好后,项⽬⽬录结构如下f). ⼀般的项⽬⽬录中,在java Resources⽬录下,还有src/main/java,src/main/test/java,src/main/test/resources这三个source folder,需要⼿动创建。
在下⾯的步骤中会讲到如何补齐这三个⽬录。
3、修改项⽬基本设置a). 右键此项⽬名称->Properties->Java Build path,点击source标签。
b). 提⽰ hello/src/main/java (missing)和hello/src/test/java (missing)。
⼀般的项⽬⽬录中,在java Resources⽬录下,还会有src/main/test/resources这个source folder。
将missing的先删除,再重新创建,缺少的直接创建。
点右键操作按键进⾏删除和添加。
c). 修改完整,效果如下图d). 接下来再修改libraries的配置,jre使⽤1.7版本。
选中JRE System Library->edit ,更换版本。
e). 再修改⼀下order and export⾥的配置,主要是调整这四个⽬录的显⽰顺序,调为⾃⼰喜欢的顺序即可f). 接下来再修改project facets,先将java修改为1.7。
Spring开发框架
件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程 序的配置和依赖性规范与实际的应用程序代码分开。
Spring Context(Spring 上下文):Spring 上下文是一个配置文件,向 Spring 框
Spring DAO:JDBC DAO
抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的 错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如 打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
JSP应用开发
Spring开发框架
本节我们对 Spring 开发框架作简要介绍。
Spring 是一个开源框架,由 Rod Johnson 创建。它是为了解决企业应用开发的复杂性而创建的。Sp ring 使用基本的 JavaBean 来完成以前只可能由 EJB(Enterprise Java Beans)完成的事情。然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和 松耦合的角度来讲,任何 Java 应用都可以从 Spring 中受益。
Spring 框架的主要优势之一就是其分层架构,分层架构允许程序 员选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
Spring开发框架
Spring 框架如下图 所示:
Spring开发框架
上图中组成Leabharlann Spring 框架的七个模块(或组件)都可以单独存在,或者与其它 一个或多个模块联合实现。每个模块的功能如下:
SpringFramework5.2.6环境构建
SpringFramework5.2.6环境构建学习本⾝是件很漫长的事情,尤其是要阅读这么优秀的源码,激动的有些睡不着觉哦,如有问题,欢迎留⾔指正。
开始正题1.gradle环境搭建1.下载 https:///releases/2.解压配置环境变量3.新建GRADLE_HOME,添加对应路径:D:\soft\gradle-5.6.44.Path下添加%GRADLE_HOME%\bin5.新建GRADLE_USER_HOME,新建⽂件夹,D:\Program Files\Java\maven_repo(根据⾃⼰路径设置),⽤于保存gradle下载的lib2. 源代码下载 从github上,可以通过命令下载,速度会快⼀些:git clone https:///spring-projects/spring-framework.git如果github实在下载不下来,就去码云上下载吧,不要被这源码下载所困住,在码云上直接搜索Spring Framework,git clone下来就⾏了3. 阅读md与预编译 下载完后,可在⽬录下看到这俩个⽂件,根据⾃⼰想要运⾏的平台去编译,看别⼈搭建的,不如⾃⼰看官⽹咋推荐的来,这还快些。
仔细看了下,eclipse搭建过程有些繁琐,⾃⼰下载的插件过多,还是推荐IDEA吧,可以剩下很多不必要的⿇烦IDEA步骤如下:_Within your locally cloned spring-framework working directory:_1. Precompile `spring-oxm` with `./gradlew :spring-oxm:compileTestJava`2. Import into IntelliJ (File -> New -> Project from Existing Sources -> Navigate to directory -> Select build.gradle)3. When prompted exclude the `spring-aspects` module (or after the import via File-> Project Structure -> Modules)4. Code away根据实际环境平台修改第⼀条命令,如果在windows上,cmd到Spring-Framework⽬录,执⾏gradlew.bat :spring-oxm:compileTestJava失败再平常不过了,我是再windows上运⾏的,过程如下,第⼀次失败了,很明显,下载不下来对应的jar包,很多时候都是⽹络不好,下载失败再⼀次尝试(Try more),看到被绿的成功后,就已经成功⼀般了4. 导⼊到IDEA cmd下成功后,导⼊到IDEA中,配置好环境,默默地等待IDEA下载、编译(对的,还要下载编译),我⾜⾜等了40分钟,⽹络不好啊,没事的可以去洗洗澡,回来就下载好了。
Spring框架下的单元测试方法
Spring框架下的单元测试⽅法介绍在Spring的框架下,做单元测试的两种办法。
⼀、使⽤spring中对Junit框架的整合功能除了junit4和spring的jar包,还需要spring-test.jar。
引⼊如下依赖:1. <span style="font-size:18px;"><span style="white-space:pre"> </span><dependency>2. <groupId>org.springframework</groupId>3. <artifactId>spring-test</artifactId>4. <version>3.1.1.RELEASE</version>5. </dependency></span>然后测试类需要继承⾃AbstractJUnit4SpringContextTests,这样就可以在测试类中使⽤注解简单的注⼊需要的bean了。
1. <span style="font-size:18px;"><span style="color:#ff0000;">@RunWith(SpringJUnit4ClassRunner.class)2. @ContextConfiguration({"classpath:applicationContext.xml"})</span>3. public class ReadDaoImplTest extends<span style="color:#ff0000;"> AbstractJUnit4SpringContextTests</span>{4. @Resource ReadDao readDao;5.6. @Test7. public void getListTest(){8. List<Client> clientList = readDao.getList("client.test", null);9.10. for(Client c:clientList){11. System.out.println(c.getVersionNum());12. }13. }14. }15. </span>⼆、⼿动加载spring的配置⽂件,并启动spring容器1. public class ReadDaoImplTest {2.3. public static void main(String[] args){4. ClassPathXmlApplicationContext context = <span style="color:#ff0000;">new ClassPathXmlApplicationContext("applicationContext.xml");</span>5.6. context.start();7.8. ReadDao fqaService = (ReadDao) context.getBean("readDao");9. System.out.println(fqaService);10. }11.12. }⽤这种⽅式测试,只需要Ctrl+F11就⾏了。
SpringBoot快速搭建微服务框架详细教程
SpringBoot快速搭建微服务框架详细教程前⾔:SpringBoot是为了简化Spring应⽤的创建、运⾏、调试、部署等⽽出现的,使⽤它可以做到专注于Spring应⽤的开发,⽽⽆需过多关注XML的配置。
简单来说,它提供了⼀堆依赖打包,并已经按照使⽤习惯解决了依赖问题---习惯⼤于约定。
Spring Boot默认使⽤tomcat作为服务器,使⽤logback提供⽇志记录。
Spring Boot的主要优点:为所有Spring开发者更快的⼊门开箱即⽤,提供各种默认配置来简化项⽬配置内嵌式容器简化Web项⽬没有冗余代码⽣成和XML配置的要求技术栈:Java 8MavenSpring-bootMybatisRedisLombokSwagger2JenkinsSonarQuber1、使⽤Maven构建项⽬1.1 通过 SPRING INITIALIZR ⼯具⽣产基础项⽬ 初始化相应信息后,下载压缩包。
解压完成后,⽤IDEA打开项⽬,项⽬的⽬录结构:总体流程:1. 访问:http://start.spring.io/2. 选择构建⼯具Maven Project、Spring Boot版本1.3.2以及⼀些⼯程基本信息3. 点击Generate Project下载项⽬压缩包解压项⽬包,并⽤IDE以Maven项⽬导⼊,以IntelliJ IDEA 14为例:1. 菜单中选择File–>New–>Project from Existing Sources...2. 选择解压后的项⽬⽂件夹,点击OK3. 点击Import project from external model并选择Maven,点击Next到底为⽌。
4. 若你的环境有多个版本的JDK,注意到选择Java SDK的时候请选择Java 7以上的版本1.2 导⼊Spring-boot 相关依赖 项⽬初始化时,相关依赖如下:spring-boot-starters:核⼼模块,包括⾃动配置⽀持、⽇志和YAMLspring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockitospring-boot-devtools:⽤于设置热部署<dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--热部署--><dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional></dependency> 这⾥我们需要引⼊Web模块,需要添加:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>1.3 启动项⽬ 添加⾸页控制层:@RestControllerpublic class IndexController {@RequestMapping("index")public String index() {return "hello world!";}} 运⾏DemoApplication中的main⽅法,启动服务:2、整合Mybatis2.1 项⽬依赖引⼊连接mysql的必要依赖mysql-connector-java引⼊整合MyBatis的核⼼依赖mybatis-spring-boot-starter引⼊tk.mybatis 依赖,实现对实体类的增删改查的代码引⼊pagerhelper 依赖,实现分页功能 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.43</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>1.1.3</version></dependency><!--pagehelper--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.1.2</version></dependency>2.2 项⽬配置 修改resources 下的application.properties⽂件:spring.datasource.url=jdbc:mysql://localhost:3306/testername=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driver#实体类扫描包mybatis.type-aliases-package=com.jaycekon.demo.model#Mapper.xml⽂件扫描⽬录mybatis.mapper-locations=classpath:mapper/*.xml#驼峰命名mybatis.configuration.mapUnderscoreToCamelCase=true#tkmapper ⼯具类mapper.mappers=com.Jaycekon.demo.util.MyMappermapper.not-empty=falsemapper.identity=MYSQLpagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql2.3 单元测试 创建实体类,我们引⼊Lombok相关依赖,⽤于避免数据Get Set⽅法的重复创建: <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency> 实体类最终的代码如下:@Data@NoArgsConstructor@AllArgsConstructor@Accessors(chain = true)public class User {private int id;private String username;private String idCard;private String phone;private String password;} 可以看出,在添加了Lombok 之后,我们的Java 实体类代码简洁了很多。
spring框架介绍以及简单使用
spring框架介绍以及简单使⽤Spring框架—控制反转(IOC)1 Spring框架概述1.1 什么是SpringSpring是⼀个开源框架,Spring是于2003 年兴起的⼀个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍⽣⽽来。
它是为了解决企业应⽤开发的复杂性⽽创建的。
框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为 J2EE 应⽤程序开发提供集成的框架。
Spring使⽤基本的JavaBean来完成以前只可能由EJB完成的事情。
然⽽,Spring的⽤途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java应⽤都可以从Spring中受益。
Spring的核⼼是控制反转(IoC)和⾯向切⾯(AOP)。
简单来说,Spring是⼀个分层的JavaSE/EE full-stack(⼀站式) 轻量级开源框架。
1.2 Spring的优点⽅便解耦,简化开发(⾼内聚低耦合)Spring就是⼀个⼤⼯⼚(容器),可以将所有对象创建和依赖关系维护,交给Spring管理spring⼯⼚是⽤于⽣成beanAOP编程的⽀持Spring提供⾯向切⾯编程,可以⽅便的实现对程序进⾏权限拦截、运⾏监控等功能声明式事务的⽀持只需要通过配置就可以完成对事务的管理,⽽⽆需⼿动编程⽅便程序的测试Spring对Junit4⽀持,可以通过注解⽅便的测试Spring程序⽅便集成各种优秀框架Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接⽀持降低JavaEE API的使⽤难度Spring 对JavaEE开发中⾮常难⽤的⼀些API(JDBC、JavaMail、远程调⽤等),都提供了封装,使这些API应⽤难度⼤⼤降低1.3 Spring的体系结构2 ⼊门案例:(IoC)2.1导⼊jar包4 + 1 : 4个核⼼(beans、core、context、expression) + 1个依赖(commons-loggins…jar)2.2⽬标类提供UserService接⼝和实现类获得UserService实现类的实例之前开发中,直接new⼀个对象即可。
springmvc之单元测试(MockMvc)-独立测试
springmvc之单元测试(MockMvc)-独⽴测试spring mvc测试框架提供了两种⽅式,独⽴安装和集成Web环境测试(此种⽅式并不会集成真正的web环境,⽽是通过相应的Mock API进⾏模拟测试,⽆须启动服务器)1、mockMvc.perform执⾏⼀个请求;2、MockMvcRequestBuilders.get("/user/1")构造⼀个请求3、ResultActions.andExpect添加执⾏完成后的断⾔4、ResultActions.andDo添加⼀个结果处理器,表⽰要对结果做点什么事情,⽐如此处使⽤MockMvcResultHandlers.print()输出整个响应结果信息。
5、ResultActions.andReturn表⽰执⾏完成后返回相应的结果。
MockMvcBuilder是⽤来构造MockMvc的构造器,其主要有两个实现:StandaloneMockMvcBuilder和DefaultMockMvcBuilder,StandaloneMockMvcBuilder继承了DefaultMockMvcBuilder。
直接使⽤静态⼯⼚MockMvcBuilders创建即可:MockMvcBuilders.webAppContextSetup(WebApplicationContext context):指定WebApplicationContext,将会从该上下⽂获取相应的控制器并得到相应的MockMvc;MockMvcBuilders.standaloneSetup(Object... controllers):通过参数指定⼀组控制器,这样就不需要从上下⽂获取了;其中DefaultMockMvcBuilder还提供了如下API:addFilters(Filter... filters)/addFilter(Filter filter, String... urlPatterns):添加javax.servlet.Filter过滤器defaultRequest(RequestBuilder requestBuilder):默认的RequestBuilder,每次执⾏时会合并到⾃定义的RequestBuilder中,即提供公共请求数据的;alwaysExpect(ResultMatcher resultMatcher):定义全局的结果验证器,即每次执⾏请求时都进⾏验证的规则;alwaysDo(ResultHandler resultHandler):定义全局结果处理器,即每次请求时都进⾏结果处理;dispatchOptions:DispatcherServlet是否分发OPTIONS请求⽅法到控制器;StandaloneMockMvcBuilder继承了DefaultMockMvcBuilder,⼜提供了如下API:setMessageConverters(HttpMessageConverter<?>...messageConverters):设置HTTP消息转换器;setValidator(Validator validator):设置验证器;setConversionService(FormattingConversionService conversionService):设置转换服务;addInterceptors(HandlerInterceptor... interceptors)/addMappedInterceptors(String[] pathPatterns, HandlerInterceptor... interceptors):添加spring mvc拦截器;setContentNegotiationManager(ContentNegotiationManager contentNegotiationManager):设置内容协商管理器;setAsyncRequestTimeout(long timeout):设置异步超时时间;setCustomArgumentResolvers(HandlerMethodArgumentResolver... argumentResolvers):设置⾃定义控制器⽅法参数解析器;setCustomReturnValueHandlers(HandlerMethodReturnValueHandler... handlers):设置⾃定义控制器⽅法返回值处理器;setHandlerExceptionResolvers(List<HandlerExceptionResolver>exceptionResolvers)/setHandlerExceptionResolvers(HandlerExceptionResolver... exceptionResolvers):设置异常解析器;setViewResolvers(ViewResolver...resolvers):设置视图解析器;setSingleView(View view):设置单个视图,即视图解析时总是解析到这⼀个(仅适⽤于只有⼀个视图的情况);setLocaleResolver(LocaleResolver localeResolver):设置Local解析器;setFlashMapManager(FlashMapManager flashMapManager):设置FlashMapManager,如存储重定向数据;setUseSuffixPatternMatch(boolean useSuffixPatternMatch):设置是否是后缀模式匹配,如“/user”是否匹配"/user.*",默认真即匹配;setUseTrailingSlashPatternMatch(boolean useTrailingSlashPatternMatch):设置是否⾃动后缀路径模式匹配,如“/user”是否匹配“/user/”,默认真即匹配;addPlaceHolderValue(String name, String value) :添加request mapping中的占位符替代;因为StandaloneMockMvcBuilder不会加载Spring MVC配置⽂件,因此就不会注册我们需要的⼀些组件,因此就提供了如上API⽤于注册我们需要的相应组件。
SpringBoot项目版本升级:从1.5.3升级到2.1.8版本
SpringBoot 项⽬版本升级:从1.5.3升级到2.1.8版本SpringBoot 项⽬版本升级:从1.5.3升级到2.1.8版本前⾔简单记录⼀次本⼈在⾃⼰的SpringBoot 项⽬project-template 中,把版本升级到版本时升级的步骤,及遇到的问题。
提升parent 版本号更改pom ⽂件中parent 的版本号修改yml ⽂件中的部分配置在1.5版本中,部分配置与2.1版本有些不同应⽤名及上下⽂1.5版本2.1版本⽂件上传1.5版本2.1版本mysql 连接1.5版本2.1版本redis 配置1.5版本2.1版本启动项⽬遇到的问题druid-spring-boot-starter 版本过低报异常当版本为1.1.6时,报异常:升级为1.1.10版本即可SpringSecurity 的AuthenticationManager 启动报异常当报异常: 1.5.3 2.1.8 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version><relativePath /></parent>server:application-display-name: ProjectTemplate-Webcontext-path: /projectserver:servlet:application-display-name: ProjectTemplate-Webcontext-path: /projectspring:http:multipart:location: E:/dev/Project/work/project_data/projettemplate/temp/dev #⽂件临时⽬录max-request-size: 40MBmax-file-size: 40MBspring:servlet:multipart:location: E:/dev/Project/work/project_data/projettemplate/temp/dev # ⽂件临时⽬录max-request-size: 40MBmax-file-size: 40MBspring: datasource:url: jdbc:mysql://localhost:3306/projettemplate?useUnicode=true&useSSL=false&characterEncoding=utf-8&autoReconnect=true&serverTimezone=GMTusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverspring:datasource:druid:url: jdbc:mysql://localhost:3306/projettemplate?useUnicode=true&useSSL=false&characterEncoding=utf-8&autoReconnect=true&serverTimezone=GMT username: rootpassword: rootdb-type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverspring: redis: # REDIS (RedisProperties) database: 0host: 127.0.0.1port: 6379timeout: 2000pool:max-active: 8max-wait: -1max-idle: 8min-idle: 0spring:redis: # REDIS (RedisProperties)database: 0host: 127.0.0.1port: 6379timeout: 2000jedis:pool:max-idle: 8max-wait: -1... ...Caused by: ng.IllegalStateException: Failed to introspect Class [com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure] from ClassLoader [uncher$AppClassLoader@18b4aac2]... ...Caused by: ng.NoClassDefFoundError: org/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvider... ...ng.IllegalStateException: Failed to introspect Class [com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure] from ClassLoader [uncher$AppClassLoader@18b4aac2]... ...Caused by: ng.NoClassDefFoundError: org/springframework/boot/autoconfigure/jdbc/metadata/DataSourcePoolMetadataProvider... ...Caused by: ng.ClassNotFoundException: org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>A component required a bean of type 'org.springframework.security.authentication.AuthenticationManager' that could not be foundA component required a bean of type 'org.springframework.security.authentication.AuthenticationManager' that could not be found在SpringSecurity⽂件中重写即可@Bean(name = BeanIds.AUTHENTICATION_MANAGER)@Overridepublic AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();}其他当报以下异常:The bean 'userDetailsServiceImpl', defined in class path resource [com/itmacy/dev/auth/security/SecurityConfig.class], could not be registered. A bean with that name has already been defined in file [/Users/chenmeixuan/macy/dev/project/study/webBack/projec在yml⽂件中添加以下配置即可spring:main:allow-bean-definition-overriding: true完结,撒花。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
搭建简单的Spring测试框架来讲,这些类已经过时了,被spring标记为了Deprecated,是不被推荐使用的,同时spring指出,我们有了更优秀的测试框架:AbstractJUnit4SpringContextTests 和AbstractTransactionalJUnit4SpringContextTests系列,那么就来看看如何使用spring推荐的框架来进行单元测试。
我们首先写一个GenericTestCase继承自spring推荐的AbstractTransactionalJUnit4SpringContextTests,这个类需要一个TransactionManager:/*** 所有测试的基类**继承自AbstractTransactionalJUnit4SpringContextTests需要一个TransactionManager,需要在spring的配置文件中指定** 默认所有的测试用例数据不会提交到数据库,但是可以使用@Rollback(false)控制,* 但是它需要维护一个plm.test.xml的配置文件,用来提供TransactionManager ** @author Administrator**/@ContextConfiguration(locations={"file:D:/A5/Developing/AVIDM_HOME/p lm/pdm/springconfig/plm.test.xml"})publicclass GenericTestCase extendsAbstractTransactionalJUnit4SpringContextTests{@BeforeClasspublicstaticvoid initTestCase(){System.setProperty("AVIDM_HOME","D:\\A5\\Developing\\AVIDM_HOME");MockServletContext servletContext = newMockServletContext("D:/A5/Developing/plm/WebContent/");servletContext.setInitParameter(ContextLoader.CONTEXT_CLASS_PARAM, "com.bjsasc.platform.spring.PlatformWebContext");ContextLoaderListener listener = new ContextLoaderListener();listener.initWebApplicationContext(servletContext);//加载springHelper.getPersistService().find("from User");//加载hibernateinitThreadLocalContext();}/*** 这个方法是根据项目的特点,将当前登录用户设置为系统管理员*/privatestaticvoid initThreadLocalContext(){User admin =UserHelper.getService().getUserById("administrator");PersonModel person = new PersonModel();person.setUserIID(admin.getAaUserInnerId());person.setUserName(admin.getName());person.setDomainRef(admin.getDomainInfo().getDomain().getAaDomain Ref());person.setDomainName(admin.getDomainInfo().getDomainName());person.setIp("127.0.0.1");ThreadConfigBean.setPtPerson(person);}/*** DataSource默认是Autowire By Type的,如果在spring的配置文件中配置了DataSource,也可以使用@Resource(name="beanid")来进行配置* 由于本项目的数据源是另外配置的,没有使用spring管理,所以需要重写。
*/@Overridepublicvoid setDataSource(DataSource dataSource) {DataSource adpDataSource =AdpDataSourceManager.getDataSource("AvidmSystemDB");super.setDataSource(adpDataSource);}}简单分析一下这个class的构成:A、@ContextConfiguration(locations={"file:D:/A5/Developing/AVIDM_HOME/p lm/pdm/springconfig/plm.test.xml"})是来指示spring的配置文件位置,支持通配符B、@BeforeClass这个注解的作用是让标注的方法在测试开始执之前执行一次(注意是在整个测试过程中只执行一次),它所标注的方法必须要是静态的C、setDataSource方法,这个事重写了父class的方法,因为这个项目的数据源配置是独立与spring之外的,不受spring管理的,所以需要咋重写这个方法最重要的就是initTestCase方法,这个方法会手动触发spring的ContextListener,然后由这个listener根据指定的locations去加载配置文件初始化WebApplicationContext。
回想一下,在web项目中使用spring需要在web.xml里面增加一个spring的listener:<listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener>然后还需要根据情况配置初始化参数<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext*.xml</param-value></context-param>然后启动tomcat,spring的listener启动,就加载了spring,那么我们怎么去手动触发这个过程呢?简单起见,我们可以直接new一个ContextLoaderListener,直接调用其中的initWebApplicationContext方法,但是这个方法需要一个ServletContext,在没有启动tomcat的情况下,如何去获取这个参数呢?其实Spring早就考虑到了这种情况,我们可以使用MockServletContext来模拟ServletContext,直接new一个,然后设置各种初始化参数。
类似的还有MockHttpServletRequest来模拟HttpServletRequest等,这样,问题就迎刃而解了。
其实在这之后,就可以在这个类里面写测试方法了。
Run As – Junit Test就可以跑了。
其他模块的测试类可以继承自此class,就不需要再次写初始化spring和hibernate了,直接按照junit4的规则来写就好。
但是既然是搭架子,就希望有一个可以一次性运行所有所有模块测试类的入口,可以这么写:package com.bjsasc.plm.test;import junit.framework.Test;import com.bjsasc.plm.test.base.GenericTestCaseLoader;publicclass TestAll {publicstatic Test suite(){return GenericTestCaseLoader.getTestSuite();}}而在GenericTestCaseLoader里面:package com.bjsasc.plm.test.base;import junit.framework.JUnit4TestAdapter;import junit.framework.Test;import junit.framework.TestSuite;import com.bjsasc.plm.test.doc.DocumentServiceTest;import com.bjsasc.plm.test.doc.DocumentWebServiceTest;/*** 加在所有的测试类* @author Administrator**/publicclass GenericTestCaseLoader {publicstatic Test getTestSuite(){TestSuite suite = new TestSuite();suite.addTest(newJUnit4TestAdapter(DocumentServiceTest.class));//每个模块的测试类写完后,都要在这里添加上suite.addTest(newJUnit4TestAdapter(DocumentWebServiceTest.class));return suite;}}通过这样简单的封装,就可以单独运行每个模块的测试类,还可以将所有模块的测试类汇集到一起来测试运行。