1. 程式人生 > >spring-boot多模組化分散式聚合工程專案結構建設

spring-boot多模組化分散式聚合工程專案結構建設

今天試了下搭建聚合工程,有幾個誤區,算是小失誤,先貼上專案結構樹:

這是大體專案結構:

其中common相當於spring-boot專案中的工具類

manager是系統的父工程,order-parent是整個聚合工程的父工程

pojo是java普通類相當於普通專案中的entity、domain

mapper依賴於pojo、service依賴於mapper、web依賴於service,這三個可以看成普通專案中的mapper、service、controller

再說打包,聚合工程就是pom,這裡面order-parent與order-manager是pom父工程,所有的模組依賴於parent,pojo、mapper、service、webyi依賴於manager,manager依賴於common工具類mapper、pojo、service打包打成jar包,個人理解就是匯入jar,web打成war包就行了

前面說pojo、mapper、service、web之間的依賴關係體現在pom檔案中,如圖:

然後具體每個模組要放些什麼依賴根據平時大家搭建專案的愛好來,比如拿mapper來說,我的mapper裡面放些mybatis、mysql、連線池之類的東西

<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>
	<parent>
		<groupId>com.order</groupId>
		<artifactId>order-manager</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<artifactId>order-manager-mapper</artifactId>
	<!-- 依賴管理 -->
	<dependencies>
		<dependency>
			<groupId>com.order</groupId>
			<artifactId>order-manager-pojo</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
		<!-- Mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
		</dependency>
		<dependency>
			<groupId>com.github.miemiedev</groupId>
			<artifactId>mybatis-paginator</artifactId>
		</dependency>
		<!-- 分頁 -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
		</dependency>
		<!-- MySql -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- 連線池 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
		</dependency>
	</dependencies>
	<!-- 如果不新增此節點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>
</project>

pojo的pom檔案:

<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>
  <parent>
    <groupId>com.order</groupId>
    <artifactId>order-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>order-manager-pojo</artifactId>
</project>

service的pom檔案

<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>
  <parent>
    <groupId>com.order</groupId>
    <artifactId>order-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>order-manager-service</artifactId>
  <dependencies>
  		<dependency>
  			<groupId>com.order</groupId>
  			<artifactId>order-manager-mapper</artifactId>
  			<version>0.0.1-SNAPSHOT</version>
  		</dependency>
  		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
  </dependencies>
</project>

web的pom檔案:

<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>
  <parent>
    <groupId>com.order</groupId>
    <artifactId>order-manager</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>order-manager-web</artifactId>
  <packaging>war</packaging>
  <!-- 依賴管理 -->
  <dependencies>
  	<dependency>
  		<groupId>com.order</groupId>
  		<artifactId>order-manager-service</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  	<!-- JSP相關 -->
	<dependency>
		<groupId>jstl</groupId>
		<artifactId>jstl</artifactId>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>servlet-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jsp-api</artifactId>
		<scope>provided</scope>
	</dependency>
	<!-- 檔案上傳元件 -->
	<dependency>
		<groupId>commons-fileupload</groupId>
		<artifactId>commons-fileupload</artifactId>
	</dependency>
  </dependencies>
</project>

我們執行專案要在manager上run,因此在這裡貼上manager的pom,裡面有tomcat的外掛配置、我也找了下官網上並沒有tomcat8的外掛,但是有個人配的tomcat,有想玩的可以去找一下:

<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>
	<parent>
		<groupId>com.order</groupId>
		<artifactId>order-parent</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</parent>
	<groupId>com.order</groupId>
	<artifactId>order-manager</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>
	<dependencies>
		<dependency>
			<groupId>com.order</groupId>
			<artifactId>order-common</artifactId>
			<version>0.0.1-SNAPSHOT</version>
		</dependency>
	</dependencies>
	<modules>
		<module>order-manager-pojo</module>
		<module>order-manager-mapper</module>
		<module>order-manager-service</module>
		<module>order-manager-web</module>
	</modules>
	<build>
		<plugins>
			<!-- 配置Tomcat外掛 -->
			<plugin>
				<groupId>org.apache.tomcat.maven</groupId>
				<artifactId>tomcat7-maven-plugin</artifactId>
				<configuration>
					<port>8080</port>
					<path>/</path>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

這裡可以看到

mapper、pojo、service、web依賴於manager,在建立這四個模組的時候選擇

然後在order-manager裡面就會出現同樣的目錄、刪了任何一個另外一個也會消失

表現層可以建立webapp-WEBINF-web.xml和index.jsp、index.html

完了可以在index寫一個東西,比如:配置成功

在這之前需要install一下父工程,將他們放在本地maven倉庫上,有兩個父工程哦!!!

然後在manager上run as →maven  build 在Goals一欄輸入:clean Tomcat7:run,到這裡出現這樣就成功搭建了一個微服務聚合工程專案