SpringCloud微服務(wù)多應(yīng)用腳手架的搭建與部署方式
最近幾年SpringBoot大熱,很多IT公司都開始采用SpringBoot來替換傳統(tǒng)的SpringMVC項(xiàng)目。那么如何搭建一個適合開發(fā)的項(xiàng)目架構(gòu)呢?
這里我主要介紹Java程序員使用最多的兩種工具進(jìn)行搭建:
- 1、MyEclipse;
- 2、idea
MyEclipse搭建
第一步:打開MyEclipse,選擇File—>New—>Other,搜索maven,點(diǎn)擊next
第二步:選擇‘Create a simple project(skip archetype selection)’,點(diǎn)擊next
第三步:填入‘Group Id’和‘Artifact Id’,注意這邊的‘Packaging’需要選擇pom,不能選擇jar或者war,然后點(diǎn)擊Finish
這樣就建好了一個SpringBoot項(xiàng)目的管理中心,展開如下圖:
第四步:多個SpringBoot項(xiàng)目之間可能會有一些公用的部分,比如User這個實(shí)體類,所以要建立一個api項(xiàng)目為其他SpringBoot項(xiàng)目提供公用的類和方法
建立api項(xiàng)目如下:
選中cloud項(xiàng)目,右鍵點(diǎn)擊打開菜單,選擇new—>other,搜索module,點(diǎn)擊next
跟上面建立cloud項(xiàng)目一樣,給該服務(wù)取名為cloud-api,點(diǎn)擊Finish
這樣就創(chuàng)建好了cloud-api服務(wù)了,項(xiàng)目結(jié)構(gòu)如下
第五步:依照上面建立cloud-api項(xiàng)目的方式,建立cloud-base-4000(基礎(chǔ)服務(wù)模塊,4000指代當(dāng)前服務(wù)對外的端口號,后面4001同理),cloud-operation-4001(運(yùn)維管理模塊)
項(xiàng)目結(jié)構(gòu)如下:
這樣多個SpringBoot項(xiàng)目都在cloud這個項(xiàng)目下管理了,接下來要api服務(wù)被base服務(wù)與operation服務(wù)共享
第六步:在cloud-api中新建被其他服務(wù)共享的類User,項(xiàng)目結(jié)構(gòu)如下圖:
這時在base服務(wù)調(diào)用api的User類會報錯并且無法導(dǎo)入User類,如下圖(解決辦法請看第七步):
第七步:打開base的pom.xml,在里面加入api服務(wù)的依賴
<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.wlovet</groupId> <artifactId>cloud</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>cloud-base-4000</artifactId> <build/> <dependencies> <dependency><!-- 自己定義的api --> <groupId>com.wlovet</groupId> <artifactId>cloud-api</artifactId> <version>${project.version}</version> </dependency> </dependencies> </project>
這時base服務(wù)中Hello類就不會報錯了,如下圖:
同樣,在operation服務(wù)也加入api的依賴,那么在operation服務(wù)也可以使用api中所有的類了
第八步:如何將這些module打包成一個個執(zhí)行的jar包,在base服務(wù)的Hello類建立一個main方法,加入如下代碼:
User user = new User(); user.setName("為止"); user.setGender("男"); System.out.println(user);
在pom.xml中加入如下配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.wlovet.Hello</mainClass><!-- 此處改為自己的類路徑 --> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>
點(diǎn)擊base服務(wù)的pom文件,右鍵—>Run As—>Maven Install,可以項(xiàng)目路徑下的target文件夾中找到打包好的jar包
拿到cmd中運(yùn)行
以上就是MyEclipse多Module的創(chuàng)建以及打包方式。
SpringBoot項(xiàng)目的啟動類與上面的Hello方法類似,所以完全能夠適用于多個SpringBoot項(xiàng)目的搭建與打包。
我們發(fā)現(xiàn)cloud、cloud-api、cloud-base-4000、cloud-operation-4001中都存在一個pom文件。其中
- 1、在cloud的pom文件中引入的依賴會作用到所有服務(wù)中,例如在cloud的pom文件中引入了slf4j依賴,則其他的服務(wù)都能直接調(diào)用slf4j
- 2、在cloud-api的pom文件引入的依賴在打包后才會加入到其他關(guān)聯(lián)服務(wù)中,在開發(fā)時不能直接引用
- 3、base服務(wù)與operation服務(wù)之間的pom引入不會相互干擾,即使是同一個依賴,版本不同都會下載兩份不同的jar包
一般我會在cloud的pom文件中加入如下依賴:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <log4j.version>1.2.17</log4j.version> <lombok.version>1.16.18</lombok.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.31</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies>
這樣每個服務(wù)都有一份這些依賴了,在每個服務(wù)下新建一個SpringBootApplication,那么每個服務(wù)都是SpringBoot服務(wù)了
idea的搭建
ideal確實(shí)很智能,操作比MyEclipse方便快捷得多,學(xué)會了MyEclipse創(chuàng)建多SpringBoot項(xiàng)目的話,ideal創(chuàng)建項(xiàng)目不成問題
不過ideal打包與MyEclipse有點(diǎn)不同,這里來單獨(dú)介紹一下:
第一步:File—>Project Structure
第二步:如下圖
第三步:選擇一個module
第四步:選擇啟動類,如果是SpringBoot則選擇SpringBootApplication作為啟動類
第五步:這里需要注意,單選選擇第二個;一定要將路徑改為resources包下,不然META-INF會生成到類路徑下,在打包的時候會找不到
第六步:開始打包
第七步:點(diǎn)擊Build
第八步:在classes文件夾下可以找到j(luò)ar包
總結(jié)
至此結(jié)束!
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶認(rèn)證授權(quán)
SpringSecurity是一個強(qiáng)大且靈活的身份驗(yàn)證和訪問控制框架,本文主要介紹了SpringSecurity+Redis+Jwt實(shí)現(xiàn)用戶認(rèn)證授權(quán),具有一定的參考價值,感興趣的可以了解一下2024-07-07mybatis-plus如何修改日志只打印SQL語句不打印查詢結(jié)果
這篇文章主要介紹了mybatis-plus如何修改日志只打印SQL語句不打印查詢結(jié)果問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06使用@ConfigurationProperties注解獲取為null的解決方法
在SpringBoot中,當(dāng)想需要獲取到配置文件數(shù)據(jù)時,除了可以用 Spring 自帶的@Value注解外,SpringBoot還提供了一種更加方便的方式:@ConfigurationProperties,但我們在通過通過get方法去取值一直為null,本文介紹了使用@ConfigurationProperties注解獲取為null的解決方法2024-09-09idea項(xiàng)目debug模式啟動,斷點(diǎn)失效,斷點(diǎn)紅點(diǎn)內(nèi)無對勾問題及解決
這篇文章主要介紹了idea項(xiàng)目debug模式啟動,斷點(diǎn)失效,斷點(diǎn)紅點(diǎn)內(nèi)無對勾問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程
這篇文章主要給大家介紹了在Linux下用java -jar運(yùn)行可執(zhí)行jar包的方法教程,文中介紹的非常詳細(xì),相信對大家的工作或者學(xué)習(xí)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器
這篇文章主要為大家詳細(xì)介紹了Spring MVC獲取參數(shù)和自定義參數(shù)類型轉(zhuǎn)換器及編碼過濾器,文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下2023-06-06SpringMVC MethodArgumentResolver的作用與實(shí)現(xiàn)
這篇文章主要介紹了SpringMVC MethodArgumentResolver的作用與實(shí)現(xiàn),MethodArgumentResolver采用一種策略模式,在Handler的方法被調(diào)用前,Spring MVC會自動將HTTP請求中的參數(shù)轉(zhuǎn)換成方法參數(shù)2023-04-04