一、为什么分组件
分组件主要是为了开发分工,层次清晰,维护方便,更能提高java的扩展这个特点进行拆分。并且能对工程中相关依赖更少的部分打包成jar,提高重用性。
二、如何分组件
关于组件的拆分,目前suning使用的是按照业务处理层进行划分,主要分为:api(对外提供服务)、web(action/Controller页面交互)、Biz(业务处理组装层)、Service(基本业务处理层)、dmo(数据库交互持久层)、common(公用层--不与任何业务关联)、war(页面、配置文件以及最终发布war架包<针对web应用而言>)。此种组件拆分一般coder理解很是方便,只是有些人不理解为什么Biz和service的关系,其实这个只是一个规则而已,eg:业务非常复杂,不是一个service就可以解决,可以分多个service进行处理,biz进行组合,流程组装全部放在biz层进行封装。
三、maven中实践
在maven中,为了进行组件拆分,需要进行以下几个步骤:
1、首先按照建立maven project项目步骤进行创建工程,创建工程中选择的packaging类型为pom。建好后,删除代码中的src文件夹(无用),此时的工程可能在working中看不到,需要选择working后,进行编辑添加。
2、右击刚建的工程,新建project,选择的是maven中的maven module,填写Name
后,
后,next到

选择建立的组件类型。Finsh后,需要刷新一次就可以在working中看到module。一般web项目只有一个module为war。
3、相关注意事项:
(1)、pom建好后删掉src,并且为了多环境需要建deploy(用法下次专门讨论)
(2)、建立的module是组件,一般非组件独有的依赖放到pom的pom.xml中配置。只有专有的才需要在module中pom.xml独立配置。
(3)、包名在各个module中劲量不要重复
(4)、对于需要对外提供服务的项目,api中可以通过提供不同类型的服务(http、webService等等类型)建立专用的包。
(5)、version最好不要使用默认的,可以从1.0.0开始。以后每次变更必须调整version。防止出现其他系统依赖错误。。。。
附录:pom中的pom.xml配置
<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>com.ghostp.sitest</groupId><artifactId>mvn-si-parent</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>sitest</name><description>sitest</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><freemarker-version>2.3.19</freemarker-version><slf4j-version>1.6.6</slf4j-version><org.springframework-version>3.1.1.RELEASE</org.springframework-version><junit-version>4.8.1</junit-version><servlet-version>2.5</servlet-version><logback-version>1.0.6</logback-version><site-version>2.4.2</site-version><strust-version>2.2.3</strust-version><com.alibaba.druid-version>1.0.9</com.alibaba.druid-version><fastjson-version>1.1.8</fastjson-version></properties><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit-version}</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>${servlet-version}</version><scope>provided</scope></dependency><!-- Web related --><dependency><groupId>opensymphony</groupId><artifactId>sitemesh</artifactId><version>${site-version}</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>${freemarker-version}</version></dependency><!-- Spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${org.springframework-version}</version><exclusions><!-- Exclude Commons Logging in favor of SLF4j --><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${org.springframework-version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${org.springframework-version}</version></dependency><!-- data --><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.1</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${com.alibaba.druid-version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>${fastjson-version}</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-tiles-plugin</artifactId><version>${strust-version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback-version}</version></dependency></dependencies></dependencyManagement><modules><module>mvn-si-dmo</module><module>mvn-si-biz</module><module>mvn-si-web</module><module>mvn-si-client</module><module>mvn-si-common</module><module>mvn-si-war</module></modules><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.6</source><target>1.6</target><showWarnings>true</showWarnings><skip>true</skip></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.1.1</version><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions><configuration><attach>true</attach></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>2.3</version><configuration><archive><addMavenDescriptor>true</addMavenDescriptor><index>true</index><manifest><addDefaultSpecificationEntries>true</addDefaultSpecificationEntries><addDefaultImplementationEntries>true</addDefaultImplementationEntries></manifest></archive></configuration></plugin></plugins></build></project>
238

被折叠的 条评论
为什么被折叠?



