【Dubbo分布式服务框架】5.传统测试工程的搭建1

来源:互联网 发布:java项目开发流程图 编辑:程序博客网 时间:2024/05/21 19:23
我们在上一节介绍了Dubbo的基础知识,但是对于开发者来说,不进行实践只讲解理论,是不可能完全理解某门技术的。这里我们就以一个项目的改造为驱动,来给大家展现一下传统Web工程,与使用Dubbo应用的工程的区别。通过动手改变项目的架构,开让大家初步理解Dubbo在开发和使用中扮演的角色,为Dubbo的深入学习打下基础。

我们在这里先编写一个Maven结构的WebProject工程,用于后期的改造。

工程需求:
对仓库货物信息进行增删改查的简单工程

工程架构:
SpringMVC框架以及MyBatis框架

数据库:
MySQL

开发工具:
MyEclipse2014

表结构:
只有一张表,commodity

Java环境:
JDK1.8 

(1)安装以及配置Maven
由于我们这个工程是Maven工程,所以首先我们要先下载Maven:
下载地址http://maven.apache.org/download.cgi
我们这里下载3.5.0的版本:


然后将其解压至D盘:


然后在环境变量中添加Maven的Home:

设置为Maven的文件夹所在目录即可。

然后在Path中添加bin所在目录:


之后在在Windows命令提示符下,输入mvn -v,出现以下结果证明
Maven安装成功:


然后在MyEclipse中配置我们的Maven插件重新定位到我们刚刚安装的目录:



(2)在MyEclipse中创建Maven工程
我们要创建两个工程,一个是包含所有依赖的Maven工程web-parent,另外一个就是我们的应用工程web-commodity。这里web-parent主要提供Web工程所需要的依赖jar包,它是为了让其它应用去引用它,使得其它应用的依赖清晰化,之和核心业务的依赖有关。

首先我们创建web-parent工程;

我们选择Maven工程进行创建:

这里我们勾选上Create a simple project (不使用骨架)

这里的Packing我们选择jar的形式,因为我们只需要它提供主要依赖服务即可。
然后我们创建完成的工程结构如下:

为了方便以后的Dubbo整合,我们将工程的jre更换为1.8的:

更换后:



接下来我们编写POM文件,将SpringMVC与MyBatis的常用依赖引入,编写之后的POM文件如下:
<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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.com.commoditySystem</groupId>  <artifactId>web-parent</artifactId>  <version>0.0.1-SNAPSHOT</version>  <properties>      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <!-- spring版本号 -->      <spring.version>4.2.5.RELEASE</spring.version>        <!-- mybatis版本号 -->      <mybatis.version>3.2.8</mybatis.version>        <!-- mysql驱动版本号 -->      <mysql-driver.version>5.1.29</mysql-driver.version>        <!-- log4j日志包版本号 -->      <slf4j.version>1.7.18</slf4j.version>      <log4j.version>1.2.17</log4j.version>      </properties>     <dependencies>      <!-- 添加jstl依赖 -->      <dependency>        <groupId>jstl</groupId>        <artifactId>jstl</artifactId>        <version>1.2</version>      </dependency>        <dependency>        <groupId>javax</groupId>        <artifactId>javaee-api</artifactId>        <version>7.0</version>      </dependency>        <!-- 添加junit4依赖 -->      <dependency>        <groupId>junit</groupId>        <artifactId>junit</artifactId>        <version>4.11</version>        <!-- 指定范围,在测试时才会加载 -->        <scope>test</scope>      </dependency>        <!-- 添加spring核心依赖 -->      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-core</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-web</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-oxm</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-tx</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-jdbc</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context-support</artifactId>        <version>${spring.version}</version>      </dependency>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-aop</artifactId>        <version>${spring.version}</version>      </dependency>        <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-test</artifactId>        <version>${spring.version}</version>      </dependency>        <!-- 添加mybatis依赖 -->      <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis</artifactId>        <version>${mybatis.version}</version>      </dependency>        <!-- 添加mybatis/spring整合包依赖 -->      <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis-spring</artifactId>        <version>1.2.2</version>      </dependency>        <!-- 添加mysql驱动依赖 -->      <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>${mysql-driver.version}</version>      </dependency>      <!-- 添加数据库连接池依赖 -->      <dependency>        <groupId>commons-dbcp</groupId>        <artifactId>commons-dbcp</artifactId>        <version>1.2.2</version>      </dependency>        <!-- 添加fastjson -->      <dependency>        <groupId>com.alibaba</groupId>        <artifactId>fastjson</artifactId>        <version>1.1.41</version>      </dependency>        <!-- 添加日志相关jar包 -->      <dependency>        <groupId>log4j</groupId>        <artifactId>log4j</artifactId>        <version>${log4j.version}</version>      </dependency>      <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>${slf4j.version}</version>      </dependency>      <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>${slf4j.version}</version>      </dependency>        <!-- log end -->      <!-- 映入JSON -->      <dependency>        <groupId>org.codehaus.jackson</groupId>        <artifactId>jackson-mapper-asl</artifactId>        <version>1.9.13</version>      </dependency>      <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->      <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-core</artifactId>        <version>2.8.0</version>      </dependency>      <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->      <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>        <version>2.8.0</version>      </dependency>        <!-- 文件上传相关依赖 -->    <dependency>        <groupId>commons-fileupload</groupId>        <artifactId>commons-fileupload</artifactId>        <version>1.3.1</version>      </dependency>        <dependency>        <groupId>commons-io</groupId>        <artifactId>commons-io</artifactId>        <version>2.4</version>      </dependency>        <dependency>        <groupId>commons-codec</groupId>        <artifactId>commons-codec</artifactId>        <version>1.9</version>      </dependency>        <!-- https://mvnrepository.com/artifact/com.github.abel533/ECharts -->      <dependency>        <groupId>com.github.abel533</groupId>        <artifactId>ECharts</artifactId>        <version>3.0.0</version>      </dependency>        <dependency>        <groupId>com.google.code.gson</groupId>        <artifactId>gson</artifactId>        <version>2.5</version>        <scope>compile</scope>        <optional>true</optional>      </dependency>        <dependency>        <groupId>net.sf.jxls</groupId>        <artifactId>jxls-core</artifactId>        <version>1.0.5</version>      </dependency>    </dependencies>      <build>    <plugins>      <plugin>        <artifactId>maven-compiler-plugin</artifactId>        <configuration>          <source>1.8</source>          <target>1.8</target>        </configuration>      </plugin>    </plugins>  </build>  </project>
上面分别包含了jstl依赖 、junit4依赖、spring核心依赖、mybatis依赖、mybatis/spring整合包依赖、mysql驱动依赖、数据库连接池依赖、日志相关依赖、JSON相关依赖(fastjson)、文件上传相关依赖等。
保存pom文件后,我们的依赖被加入classpath下:



因为我们这个工程是用来做核心依赖的,所以我们这里添加一些常用的工具类:

里面包含了Base64工具类,字节处理工具类,日期处理工具类,日志工具类,Md5加密工具类,文件处理工具类,字符串处理工具类,上传工具类等。
常用工具类下载链接:http://pan.baidu.com/s/1pJLSczD


然后我们创建我们的Maven的Web工程,该工程就是我们的商品管理的项目工程web-commodity了,会以web-project工程为核心依赖。
同样是创建Maven工程,但是我们是Web工程,所以选择打包方式为war的形式:

刚创建时pom文件可能会报错,那是因为我们选择了war的打包形式,但是没有添加war的配置maven-war-plugin,我们添加后pom文件如下:
<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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.com.commoditySystem</groupId>  <artifactId>web-commodity</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>  <build>    <plugins>      <plugin>        <artifactId>maven-compiler-plugin</artifactId>        <configuration>          <source>1.8</source>          <target>1.8</target>        </configuration>      </plugin>      <plugin>      <artifactId>maven-war-plugin</artifactId>      <configuration>      <version>3.1</version>      </configuration>      </plugin>    </plugins>  </build></project>
同样我们把jre的版本改为1.8,为后续Dubbo改造做准备。
然后我们在POM文件中添加刚才的核心依赖工程web-project:
<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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.com.commoditySystem</groupId>  <artifactId>web-commodity</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>war</packaging>    <dependencies>   <dependency>        <groupId>cn.com.commoditySystem</groupId>        <artifactId>web-parent</artifactId>        <version>0.0.1-SNAPSHOT</version>      </dependency>  </dependencies>    <build>    <plugins>      <plugin>        <artifactId>maven-compiler-plugin</artifactId>        <configuration>          <source>1.8</source>          <target>1.8</target>        </configuration>      </plugin>      <plugin>      <artifactId>maven-war-plugin</artifactId>      <configuration>      <version>3.1</version>      </configuration>      </plugin>    </plugins>  </build></project>

这时我们不仅获得了SpringMVC与MyBatis工程需要的所有依赖,而且获取了web-parent工程的依赖:


由于我们的项目要使用MyEclipse发布到tomcat下面,这里我们需要先把项目转成dynamic web project。我们在项目上点击右键,选择properties并找到Project Facets:

然后勾选Dynamic Web Module 并点击ok:


然后我们的Maven工程结构就变成dynamic web project了:


我们在WEB-INF下添加web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>

然后改写以下Web工程默认的index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">    <title>Home</title>  </head>    <body>    这里是web-commodity的首页<br>  </body></html>

我们将该工程发布到tomcat中试验一下:



在浏览器访问工程获得结果页面:


说明我们的核心依赖工程web-parent和Web工程web-commodity创建成功,并且成功发布到tomcat中加载。

下一篇我们将在Web工程上构建SpringMVC和MyBtais的开发环境。

转载请注明出处:http://blog.csdn.net/acmman/article/details/74780968

原创粉丝点击