博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
企业项目开发--企业中的项目架构以及多环境分配(1)
阅读量:6483 次
发布时间:2019-06-23

本文共 9106 字,大约阅读时间需要 30 分钟。

此文已由作者赵计刚授权网易云社区发布。

欢迎访问,了解更多网易技术产品运营经验。

1、业务模块与数据模块分离

在实际开发中,我们项目的架构业务模块和数据模块是分离的,举个例子,假设我们的项目有"人员管理模块"和"酒店管理模块"两个模块,按照上一章的介绍,我们会建立下图所示的项目结构:

20181219154907406a8d42-91bc-4f2b-afe5-9cd44cc361ae.jpg

其中,人员管理模块的controller、service、dao、mapper都在一个项目中,而在实际使用中,我们会将数据模块分离出来,即将以上两个子模块的service、dao、mapper拿出来,放在一个子项目中,形成如下的项目结构:

201812191549200eadf155-1eca-48b4-8406-e4be590a051b.jpg

注意以下几点:

  • 包的命名最好是com.xxx.mapper.user和不是com.xxx.user.mapper,前者在spring.xml中配置mybatis时更方便,具体见spring.xml的中的注释

  • 在controller那一层的项目是需要部署的,即是war,而下边的数据模块是作为war的一个jar,所以在war层的pom.xml需要将下边的数据模块作为一个jar来引入到项目中

  • service层到底是放在业务模块处还是放在数据模块处,这个根据需求而定,一般而言,都放在数据模块处,方便彼此service的调用,如userService调用hotelService,如果这个时候把两个service分别放在各自的业务模块层中,相互的调用就要通过RPC了,当然,有的时候可能有些与其他模块都不调用的service放在war层可能会好一些。

  • 将来编写的缓存模块类、通用模块类、RPC工具类等都会作为jar被war层调用。

 

2、实现

我将上一章的项目做了修改,将ssmm项目改成了userManagement项目,并将userManagement项目实现了业务模块和数据模块的分离,具体的操作参照第一章和第二章的相关内容,这里直接给出项目结构和各个文件。

2.1、项目结构

201812191549332cee5ced-ddf3-43c4-8738-21aa3f2e1881.jpg

2.2、代码实现

2.2.1、ssmm0

pom.xml

 

    
4.0.0
    
com.xxx
    
ssmm0
    
1.0-SNAPSHOT
    
ssmm0
    
pom
    
    
        
userManagement
        
data
    
    
        
UTF-8
        
UTF-8
    
    
    
        
            
            
                
com.alibaba
                
fastjson
                
1.1.39
            
            
            
                
javax.servlet
                
javax.servlet-api
                
3.0.1
                
provided
            
            
            
                
org.springframework
                
spring-core
                
3.2.6.RELEASE
            
            
                
org.springframework
                
spring-beans
                
3.2.6.RELEASE
            
            
                
org.springframework
                
spring-context
                
3.2.6.RELEASE
            
            
                
org.springframework
                
spring-web
                
3.2.6.RELEASE
            
            
                
org.springframework
                
spring-webmvc
                
3.2.6.RELEASE
            
            
            
                
org.springframework
                
spring-context-support
                
3.2.6.RELEASE
            
            
            
                
mysql
                
mysql-connector-java
                
5.1.27
                
runtime
            
            
            
                
org.apache.tomcat
                
tomcat-jdbc
                
7.0.47
            
            
            
                
org.mybatis
                
mybatis
                
3.1.1
            
            
                
org.mybatis
                
mybatis-spring
                
1.1.1
            
            
            
                
org.apache.velocity
                
velocity
                
1.5
            
            
                
velocity-tools
                
velocity-tools-generic
                
1.2
            
            
            
                
commons-codec
                
commons-codec
                
1.7
            
            
                
org.bouncycastle
                
bcprov-jdk15on
                
1.47
            
            
            
                
org.apache.commons
                
commons-collections4
                
4.0
            
            
            
                
org.apache.httpcomponents
                
httpclient
                
4.2.6
            
        
    
        
    
        
        
            
com.alibaba
            
fastjson
        
        
        
            
org.springframework
            
spring-core
        
        
            
org.springframework
            
spring-beans
        
        
            
org.springframework
            
spring-context
        
        
        
            
org.apache.commons
            
commons-collections4
        
    
        
        
            
            
                
src/main/resources
                
true
                
                    
*.xml
                
            
            
        
            
        
    
        
        
            
dev
            
                
false
                
                    
env
                    
dev
                
            
            
                
dev
                
com.mysql.jdbc.Driver
                
                
                
root
                
123456
            
        
        
        
            
rc
            
                
false
                
                    
env
                    
rc
                
            
            
                
rc
                
com.mysql.jdbc.Driver
                
                
                
root2
                
1234562
            
        
        
        
            
prod
            
                
true
                
                    
env
                    
prod
                
            
            
                
prod
                                
com.mysql.jdbc.Driver
                
                
                
sadhijhqwui
                
zxczkchwihcznk=
            
        
    

 

注意:

  • 所有的注意点:都在注释中

  • 上述<build>中的resource的配置是为了是spring.xml可以读取pom.xml文件的内容,具体的注意点,查看注释

  • profiles的配置是为了配置多套环境(在这里配置了三套env,开发,预上线和线上环境),具体的注意点,查看注释

更多网易技术、产品、运营经验分享请。

相关文章:

【推荐】 

转载地址:http://nriuo.baihongyu.com/

你可能感兴趣的文章
Mybatis框架入门
查看>>
winform登录窗体加载等待图片
查看>>
odoo开发笔记--form视图自定义
查看>>
Java ZIP压缩文件使用总结
查看>>
UML
查看>>
UWP Composition API - 锁定列的FlexGrid
查看>>
Java函数结束时的内存回收坑
查看>>
JS引用类型 -- Object类型
查看>>
木其工作室代写程序 [原]Java环境的搭建
查看>>
创意网站应用--原创奇妙点子想法
查看>>
自己动手写个Android数据库orm框架,支持关联关系,数据懒加载
查看>>
利用JS最真实的模拟鼠标点击
查看>>
百度Touch.js
查看>>
C#生成数据库中表的XML文件
查看>>
《windows程序设计》学习_3.3:利用xp扫雷资源
查看>>
递归之求二维数组的最短路径、给定一个整数和一个数组任意选择数组中的数累加能否得到该整数...
查看>>
用PyRestful快速构建Tornado下REST APIs 的支持
查看>>
【转载】MiniUtilityFramework(七):STRING
查看>>
[mysql] 如何将拷贝过来的数据 *.ibd 文件生效 及查看数据存储位置
查看>>
windows 下,go语言 交叉编译
查看>>