本文主要分三部分,分别是:后台核心业务逻辑、桥梁辅助控制和前台显示页面。

       本Web开发环境综合了多种工具,包括Maven包管理与编译工具、Dubbo分布式服务框架、MyBatis数据持久化工具、Linner页面管理工具和Handlebars Js模板引擎等前卫的开发工具。

        首先介绍一下:后台核心业务逻辑搭建。

      后台核心业务逻辑大致分为三个层次:最底层的核心数据逻辑层(biz层),中间层Dubbo服务实现层(service-impl层)Dubbo服务接口层(service-client层)。此外还有公共的jar包管理父工程(parent工程)公共业务逻辑工程(common工程)任务调度工程(task工程)总的maven管理工程

      示例如下图:

       Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

     接下来我会按照搭建顺序简单介绍一下相关工程的配置:

     基本的顺序是parent工程→biz工程→common工程→task工程→service-client工程→service-impl工程。

   1.1 基本jar包管理和服务环境配置parent工程

     parent工程结构如下图所示:

     Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    parent工程主要包括pom工程配置文件,filters文件下的三个开发环境配置文件和maven打包bat批处理命令文件。

    首先介绍一下parent工程的pom文件:

     (1)  不同的打包环境配置,使用不同的打包配置便利了项目整个开发,测试到生产流程的统一化管理。默认将开发环境激活,配置如下图所示:

     Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   (2)  编译时设置不对指定的资源文件进行替换。包括Freemarker模板文件ftl,静态-dynamic.xml文件,mybatis动态SQL Mapper文件。如下图:

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    (3)   工程编码和打包插件配置:包括工程编码插件Java版本1.7,生成javadoc插件,打包Java源码插件,导入eclipse工程插件等的配置。如下图所示:

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   (4)  单元测试覆盖率统计插件配置:

   忽略对以下路径文件的单元测试覆盖率统计:action、webapp、interceptor、taglib、domain、model、dto和util/DataFormat.class。下图相应配置信息:

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   1.2  biz核心业务逻辑工程

       biz工程结构如下图所示:
       Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   按模块划分的动态SQLMapper文件:示例:SamStateInfoMapper.xml,如图1-21

   序号①指定mybatis基本配置文件sqlMapConfig.xml的路径。

    序号②指定动态SQL Mapper文件的路径。

    序号③为基础的baseDAO Bean的声明。

    a包类文件,主资源文件;测试Java包类文件,测试资源文件四大部分组成。

     主Java包类文件的文件路径为com.ouc.mkhl.supplier,下按模块划分,示例中为jmx、security和util 3个模块。security模块又细分为advice包、dao数据访问对象包、domain包、model数据实体类包和service服务接口包,service服务接口包下包含impl服务接口实现包。

     主资源文件包含email邮箱模板文件、logs日志配置文件、mybatis配置文件、spring相关配置文件。之后将对各配置文件做逐一介绍。

     测试Java包类文件包含与主Java包相关的各单元测试文件。

     测试资源文件包含springcache文件和mybatis数据持久层generator配置文件。

     1)  biz工程的pom配置文件:如下图所示:

     Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    序号①为工程的父maven工程配置。

    序号②为工程的继承和引用工程关系配置。   

   2)  biz工程主资源配置文件说明:

    (1)  mybatis配置文件:首先介绍基本的SQLMap配置文:sqlMapConfig.xml

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    按模块划分的动态SQLMapper文件:示例:SamStateInfoMapper.xml,如下图

   Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   (2)  spring相关配置文件:

   ①   缓存cache配置文件:ehcache.xml,spring-cache-security.xml,spring-cache.xml。

   ②   jmx运行期系统管理配置文件:spring-jmx-mbean.xml。

   ③   按模块划分的自定义Bean声明配置文件:示例:spring-upload.xml

   Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   序号①为类似DAO的数据库接口操作类Bean。

   序号②为服务接口Bean方法。

   b为声明的切面,a为前置通知和后置通知要执行的方法。

   ④  公用操作的配置文件spring-common.xml。

   Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   序号①指定mybatis基本配置文件sqlMapConfig.xml的路径。

   序号②指定动态SQL Mapper文件的路径。

   序号③为基础的baseDAO Bean的声明。

   ⑤  spring配置工具配置:spring-config-toolkit.xml

   Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   ⑥   数据源配置:spring-datasource.xml

   Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   ⑦  Dubbo服务接口发布配置:spring-dubbo.xml

  Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

  ⑧   服务扩展接口配置:spring-external.xml

  Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

  ⑨   业务日志配置:spring-log.xml

 Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   ⑩  Quartz监控配置:spring-monitor.xml

Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建  

  传输事物管理配置:spring-transaction.xml

Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   biz工程代码示例:

    a.Jmx运行期管理扩展服务:

    用户暴露系统相关管理接口,以实现运行期调用:ExposeMethodInterface

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

   运行期管理系统接口实现:Configuration

    Spring+Maven+Dubbo+MyBatis+Linner+Handlebars—Web开发环境搭建

    b.系统初始化:SystemBootstrap

 1 package com.ouc.mkhl.supplier.util;
 2 import java.io.IOException;
 3 import java.io.InputStream;
 4 import java.util.Properties;
 5 import mx4j.tools.adaptor.http.HttpAdaptor;
 6 import org.apache.commons.logging.Log;
 7 import org.apache.commons.logging.LogFactory;
 8 import org.springframework.beans.factory.InitializingBean;
 9 import org.springframework.core.env.AbstractEnvironment;
10 import com.ouc.openplatform.SysException;
11 import com.ouc.openplatform.console.audit.AuditInfoCollector;
12 import com.ouc.openplatform.session.listener.MaxSessionUtil;
13 import com.ouc.openplatform.util.Env;
14 import com.ouc.openplatform.util.HOPConstant;
15 
16 /**
17  * @author WuPing
18 */
19 public class SystemBootstrap implements InitializingBean {
20     /*
21      * CONFIG_FILE_PATH 系统变量配置文件路径
22      */
23     private static final String CONFIG_FILE_PATH = "/env.properties";
24     private static final Log LOG = LogFactory.getLog(SystemBootstrap.class);
25     private HttpAdaptor httpAdaptor;
26     public static void  init() {
27         InputStream inputStream = null;
28         Properties properties = new Properties();
29         try{
30     inputStream SystemBootstrap.class.getResourceAsStream(CONFIG_FILE_PATH);
31             properties.load(inputStream);
32             LOG.info("系统配置项:"+properties);
33         }catch (Exception e) {
34             LOG.error("读取系统配置文件时发生错误:",e);
35             throw new SysException(e);
36         }finally{
37             if(inputStream != null){
38                 try {
39                     inputStream.close();
40                 } catch (IOException e) {
41                     LOG.error("关闭文件输入流失败:",e);
42                 }
43             }
44         }
45         Env.init(properties);
46         AuditInfoCollector.setAppNM(Env.getProperty(Env.KEY_SERVER_NAME));
47         HOPConstant.setAppName(Env.getProperty(Env.KEY_SERVER_NAME));
48         //设置一些全局参数
49     MaxSessionUtil.setMaxSessionKey(Env.getProperty(Env.KEY_SERVER_NAME)+"_MAX_SESSION_KEYS");
50         //使用spring的profile
51     System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, Env.getProperty(Env.ENV_TYPE));
52     }
53 
54     @Override
55     public void afterPropertiesSet() throws Exception {
56         httpAdaptor.start();
57     }
58 
59     public void setHttpAdaptor(HttpAdaptor httpAdaptor) {
60         this.httpAdaptor = httpAdaptor;
61     }
62 }
View Code

     c.DAO:SupplyUserDAO:

 1 package com.ouc.mkhl.supplier.security.dao;
 2 import java.util.List;
 3 import com.ouc.mkhl.supplier.security.model.SupplyUser;
 4 public interface SupplyUserDAO {
 5     public int deleteByPrimaryKey(String supplycode);
 6     public int insert(SupplyUser record);
 7     public SupplyUser selectByPrimaryKey(String supplycode);
 8     public int updateByPrimaryKey(SupplyUser record);
 9     public List<SupplyUser> selectAllSupplyUser();
10     public SupplyUser selectByVCode(String supplycode);
11 }
View Code

相关文章:

  • 2021-06-12
  • 2021-07-15
  • 2022-12-23
  • 2021-07-05
  • 2022-12-23
  • 2021-12-03
  • 2021-12-03
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
  • 2022-02-07
  • 2021-04-22
  • 2021-09-17
  • 2022-12-23
相关资源
相似解决方案