组件化项目搭建(非专业,无聊的一次尝试) 原

        说到组件式开发,比较抽象。打个比方,就好像是积木,散着的时候,各个是个独立的东西,但是通过一系列的组合,他就会成为一个新的整体。java web追求的是解耦,这样的一种组件式开发,其实也完成了这个功能。程序员是独立的,每个程序员有自己的特长与喜好,假如组件分为dao组件,service组件,以及web前端组件,把所有喜欢和数据库打交道的程序员分到dao组件下,所有喜欢业务的程序员分到service组件下等等。只要接口不变,每个程序员都不用关心别的组件到底是怎么开发的,更不用关心别的组件是用的什么框架。

        下图是一个图片说明:

        理想是美好的,那能不能实现呢?一般来说,项目都是MVC结构,而且大部分项目都会使用SSH或者SSM架构,通过spring把整个MVC紧密的结合在一起。代码上依赖注入实现解耦,但有个前提是你接口的实现类必须要由spring管理的。那么想要实现组件式,就不能采取这样的一种方式。因为组件是相互独立的,简单说就是两个完全不同的项目。

        我们使用maven来构建项目。环境是jdk64位,tomcat7.0.61 64位,Eclipse luna64位。首先创建一个Maven Project作为父项目,起名叫module-parent。

为了方便下载,在pom文件里加上私服以及junit

<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>scc-module</groupId>
  <artifactId>module-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>module-parent</name>
  <description>父项目</description>
  <build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-resources-plugin</artifactId>
										<versionRange>[1.2,)</versionRange>
										<goals>
											<goal>resources</goal>
											<goal>testResources</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>2.1</version>
					<configuration>
						<source>1.7</source>
						<target>1.7</target>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<pluginRepositories>
		<pluginRepository>
			<id>nexus</id>
			<name>nexus</name>
			<url>http://192.168.1.31:8081/nexus/content/groups/public/</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>
	<repositories>
		<repository>
			<id>nexus</id>
			<name>nexus</name>
			<url>http://192.168.1.31:8081/nexus/content/groups/public</url>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>
	<dependencies>
		<!-- 单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
		</dependency>
	</dependencies>
</project>

然后关键的来了,建立组件。先建一个maven module,取名叫module-dao

紧接着同上建立service的module,这里记得不能直接点finish,要点next,在packing那里选择war,以下是建好的目录结构

篇幅不够了,下篇说吧

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏皮振伟的专栏

[linux][memory]ksm/uksm的调优和优化尝试

前言: 在前文《[linux][memory]KSM技术分析》中,分析了KSM技术的基本实现原理。这里再总结一下使用ksm/uksm遇到的几个问题,并附加上作者...

57212
来自专栏各种机器学习基础算法

标准的经营类业务流程

一、标准的经营类业务流程是这样的,想来一个么? 1.特性开发环境:自动隔一段时间如5分钟从branches分支持同步svn代码。无需申请 2.主干测试...

3275
来自专栏智能计算时代

物联网IEC 61499 101标准介绍

PLC 基本上,PLC是一种业界用于控制不同系统的输入和输出的小型计算机。通常,输入是按钮和传感器,输出是电机。如果您有Informatic背景,您可以将PLC...

3435
来自专栏hotqin888的专栏

真实实践中的MeritMS与Project Wise的校审流程对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

991
来自专栏GA小站

UTM参数使用30问——既UTM参数使用指南(2018)

有很多缺少Google Analytics的UTM参数而导致的跟踪错误案例,我在Google Analytics Community和 Quora 看到过成千上...

3872
来自专栏ImportSource

NoSQL分布式模型实现之一:Single Server

翻译内容: NoSQL Distilled 第四章 Distribution Models 作者简介: ? 本节摘要: 第四章我们主要说的是NoSQL运...

26610
来自专栏Crossin的编程教室

【每日一坑 6】 查找文件内容

Hello 大家好,我终于又来挖坑了。 上次的坑好像反响不是很好,论坛上只有两份解答。其实这题难度不大,不用什么特殊的函数来解决,就是字符串、队列的各种操作,可...

2767
来自专栏开源优测

jmeter性能测试实践注意事项12

前言 在使用jmeter进行性能测试实践时,必须要注意jmeter的一些局限性,充分使用jmeter优势功能,这样才能更好的发挥出jmeter的能力。 要注意限...

3678
来自专栏施炯的IoT开发专栏

Application Architecture Guide 2.0 - CH 19 - Mobile Applications(1)

Chapter 19: Mobile Applications Objectives • Define a mobile application. • Unde...

2037
来自专栏PHP在线

NoSQL数据库的分布式算法

原文出处: highlyscalable.wordpress.com 译文出处:juliashine 系 统的可扩展性是推动NoSQL运动发展的的主要理由...

3328

扫码关注云+社区

领取腾讯云代金券