此文已由作者赵计刚授权网易云社区发布。
欢迎访问,了解更多网易技术产品运营经验。
1、业务模块与数据模块分离
在实际开发中,我们项目的架构业务模块和数据模块是分离的,举个例子,假设我们的项目有"人员管理模块"和"酒店管理模块"两个模块,按照上一章的介绍,我们会建立下图所示的项目结构:
其中,人员管理模块的controller、service、dao、mapper都在一个项目中,而在实际使用中,我们会将数据模块分离出来,即将以上两个子模块的service、dao、mapper拿出来,放在一个子项目中,形成如下的项目结构:
注意以下几点:
包的命名最好是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、项目结构
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,开发,预上线和线上环境),具体的注意点,查看注释
更多网易技术、产品、运营经验分享请。
相关文章:
【推荐】