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,到這裡出現這樣就成功搭建了一個微服務聚合工程專案