首先来谈谈e3mall商城,e3mall商城是黑马推出一个学习的项目,前身是淘淘商城.两个用的技术差不多.,但由于后期加了一些新技术,更名为e3mall商城.本商城为分布式商城,主要用到的技术使maven、ssm框架、redis缓存,redis实现单点登录、zookeeper、dubbo、solr、activemq、nginx、freemarker等技术。

一、谈谈项目的架构

该项目由于是一个商城,因此需要考虑到很多因素,比如项目的抗压能力等因素,因此该项目使用了分布式架构,分布式架构在这几年基本上很流行了。所以现在又出现了Spring Boot、Spring Clound 等框架出现。因为该项目很大,复杂度很高,属于一个经典的项目。因此该项目使用了ssm框架+maven管理。

maven管理该项目,该项目包含一个parent(pom),用于管理该项目的jar包版本号。然后parent文件下面再创建每一个模块的maven文件,每一个模块包含两大类文件,一类是使用了聚合工程(pom),里面包含Dao(jar)、pojo(jar)、interface(jar)和service(war)。然后另一个是Web模块(war),Web模块通过dubbo、zookeeper技术调用service模块的服务(利用interface层)。

(0)父亲

(1)儿子

(2)孙子

e3-parent:父工程,打包方式pom,管理jar包的版本号。(0)

— | 项目中所有工程都应该继承父工程。

—— |–e3-common:通用的工具类通用的pojo。打包方式jar(1)

—— |–e3-manager:服务层工程。聚合工程。Pom工程(1)

—— ——|–e3-manager-dao:打包方式jar(2)

—— ——|–e3-manager-pojo:打包方式jar(2)

—— ——|–e3-manager-interface:打包方式jar(2)

—— ——|–e3-manager-service:打包方式:jar(2)

—— |–e3-manager-web:表现层工程。打包方式war(1)

然后通过maven的依赖传递来把所有的maven都联系在一起。

web中依赖interface(通过接口调用)

service依赖interface(因为要实现interface的接口,因此也需要依赖interface)

service依赖dao(因为service调用dao层查询数据库)

interface调用pojo(因为interface中需要用到pojo,比如public updateUser(User user);)

同时我也画了图方便大家查看.

二、dao层

dao层是操作数据库的一层,由于使用的是ssm框架,因此这里使用mybatis的逆向工程,然后把mapper包中的文件复制到dao层中。然后配置pom文件,引入jar包,比如mysql、druid以及mybatis等的jar包。同时也需要依赖注入pojo。否则mapper接口会报错。注意,为了避免运行后xml文件漏掉,需要在pom最后配置包含xml文件。

<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>

三、pojo层

pojo层也是通过mybatis的逆向工程生成得到的,同理。

四、interface层

interface配置主要在pom文件中引入pojo的jar包

五、service层(* )

service层是一个war工程。因此它的配置比较繁琐,除了pom文件中引入jar包(Spring interface、dao、dubbo。zookerper、activemq、redis等),还需要对spring进行配置,存放在resource中(把配置文件分开,分为dao、service和trans),还有web.xml的配置。让工程运行后自动加载Spring容器。因配置为ssm的简单配置。故不详细说。

六、web层( *)

web层主要是controller层,用来拦截前端的请求,然后拦截到方法中再进行下一步详细操作。配置也是简单的ssm配置(扫描包、静态文件放行、)web.xml(springmvc前端控制器,解决post乱码)。故不再叙述。

基本上该项目的架构大概就是这样,如果还有其他的遗漏的,欢迎评论区留言,小锋会尽快更新第二节

e3mall商城的归纳总结1之项目的架构的更多相关文章

  1. e3mall商城的归纳总结9之activemq整合spring、redis的缓存

    敬给读者 本节主要给大家说一下activemq整合spring,该如何进行配置,上一节我们说了activemq的搭建和测试(单独测试),想看的可以点击时空隧道前去查看.讲完了之后我们还说一说在项目中使 ...

  2. e3mall商城的归纳总结10之freemarker的使用和sso单点登录系统的简介

    敬给读者的话 本节主要讲解freemarker的使用以及sso单点登录系统,两种技术都是比较先进的技术,freemarker是一个模板,主要生成一个静态静态,能更快的响应给用户,提高用户体验. 而ss ...

  3. e3mall商城的归纳总结6之redis

    一.说在前面的话 前面几节我们主要对该项目的后端进行了增删改查,但是所有的数据都是存放在数据库中,这样的话数据库的压力显而易见是很大的,因此本节学习nosql的缓存,也就是redis的使用,在使用之前 ...

  4. e3mall商城的归纳总结4之图片服务器以及文本编辑器

    一.图片服务器 --1.认识图片服务器 大家可能都知道在分布式架构中使用图片上传可能会导致文件存放在某一个项目,而我们的项目基本上都采用集群的方式 ,因此这样会导致图片的问题比较难以存放,在这里我们有 ...

  5. e3mall商城的归纳总结2之认识dubbo、zookeeper

    由于本项目用的是soa架构,因此必须需要两个系统之间进行通信,目前的解决办法有三种(本人认为) Webservice:效率不高基于soap协议.项目中不推荐使用. 使用restful形式的服务:htt ...

  6. e3mall商城的归纳总结7之solr搭建和应用

    敬给读者的话 本文主要应用的技术是solr技术的搭建和应用,本文小编尽量写的更详细一些,让读者在不考虑项目的情况下也能正常完成solr的搭建,说完搭建之后,再说明运行solrj在项目中如何应用solr ...

  7. e3mall商城的归纳总结3之后台商品节点、认识nginx

    一  后台商品节点 大家都知道后台创建商品的时候需要选择商品的分类,而这个商品的分类就就像一棵树一样,一层包含一层又包含一层.因此这里用的框架是easyUiTree.该分类前端使用的是异步加载模式(指 ...

  8. e3mall商城的归纳总结8之solr集群、activemq的搭建和使用

    由于本节内容比较分散,因此专门为这两个技术进行开展了帖子. solr集群的搭建 solr集群solrJ的测试 activemq的搭建 activemq的使用 引入activemq.jar包 我们先来说 ...

  9. e3mall商城的归纳总结5之修改商品分类、e3mall—content的搭建

    说在前面的话 本节基本上没有用到新的知识点.主要还是对数据库的增删改查以及创建了一个新的内容模块. 新增商品分类 由于easyUI的Tree需要三个字段(Id.state.text), [{ &quo ...

随机推荐

  1. 5.4 省选模拟赛 修改 线段树优化dp 线段树上二分

    LINK:修改 题面就不放了 大致说一下做法.不愧是dls出的题 以前没见过这种类型的 不过还是自己dp的时候写丑了. 从这道题中得到一个结论 dp方程要写的优美一点 不过写的过丑 优化都优化不了. ...

  2. VMware 虚拟机开机黑屏解决方法

    # 调整VMware硬盘启动优先级 第一步:打开电源时进入固件,也就是BIOS 设置界面. 第二步:找到Main-最下面的Boot-time Diagnostic Screen,敲“Enter”,弹出 ...

  3. Flask官方文档学习-flask快速入门

    环境搭建 下载安装Python3:www.python.org 终端运行命令:python3 -m venv flask_dev,来创建虚拟环境 启用虚拟环境,终端使用命令 source /flask ...

  4. 03-注释与API文档

    1.注释:Comment分类: 单行注释:// 多行注释:/* */ 文档注释:/** */作用: ① 对所写的程序进行解释说明,增强可读性.方便自己,方便别人 ② 调试所写的代码特点: ①单行注释和 ...

  5. 系统UISearchController详解

    原文链接:https://www.jianshu.com/p/aa9a153a5b58

  6. java_static、final、super、this关键字的使用

    static关键字 它可以修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象. 当 static 修饰成员变量时,该变量称为类变量 static 数据类型 变量名: 当 sta ...

  7. 你可以 CRUD,但你不是 CRUD 程序员!

    什么是务实 务实程序员他们总是在面临问题时,透过问题看到本质,从具体的场景出发,从大局着想,了解整个问题的来龙去脉,他们会对自己的行为负责,在项目面临问题时,他们不会撒手不管或者任由风险一步步扩大直至 ...

  8. java引用数据类型之Scanner与Random

    一 Scanner类 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型  变量名  =  new 数据类型(); 每种引用数据类型都s ...

  9. C#LeetCode刷题之#326-3的幂(Power of Three)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3867 访问. 给定一个整数,写一个函数来判断它是否是 3 的幂次 ...

  10. Azure认知服务之表格识别器

    认知服务 Azure 认知服务的目标是帮助开发人员创建可以看.听.说.理解甚至开始推理的应用程序. Azure 认知服务中的服务目录可分为五大主要支柱类别:视觉.语音.语言.Web 搜索和决策.开发人 ...