SpringCloud微服务多应用脚手架的搭建与部署

news2024/9/30 11:26:25

最近几年SpringBoot大热,很多IT公司都开始采用SpringBoot来替换传统的SpringMVC项目。那么如何搭建一个适合开发的项目架构呢?

这里我主要介绍Java程序员使用最多的两种工具进行搭建:1、MyEclipse;2、idea

MyEclipse搭建

第一步:打开MyEclipse,选择File—>New—>Other,搜索maven,点击next

 

第二步:选择‘Create a simple project(skip archetype selection)’,点击next

第三步:填入‘Group Id’和‘Artifact Id’,注意这边的‘Packaging’需要选择pom,不能选择jar或者war,然后点击Finish

这样就建好了一个SpringBoot项目的管理中心,展开如下图:

第四步:多个SpringBoot项目之间可能会有一些公用的部分,比如User这个实体类,所以要建立一个api项目为其他SpringBoot项目提供公用的类和方法

建立api项目如下:

选中cloud项目,右键点击打开菜单,选择new—>other,搜索module,点击next

跟上面建立cloud项目一样,给该服务取名为cloud-api,点击Finish

这样就创建好了cloud-api服务了,项目结构如下

第五步:依照上面建立cloud-api项目的方式,建立cloud-base-4000(基础服务模块,4000指代当前服务对外的端口号,后面4001同理),cloud-operation-4001(运维管理模块)

项目结构如下:

这样多个SpringBoot项目都在cloud这个项目下管理了,接下来要api服务被base服务与operation服务共享

第六步:在cloud-api中新建被其他服务共享的类User,项目结构如下图:

这时在base服务调用api的User类会报错并且无法导入User类,如下图(解决办法请看第七步):

第七步:打开base的pom.xml,在里面加入api服务的依赖

<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服务中Hello类就不会报错了,如下图:

同样,在operation服务也加入api的依赖,那么在operation服务也可以使用api中所有的类了

第八步:如何将这些module打包成一个个执行的jar包,在base服务的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>

点击base服务的pom文件,右键—>Run As—>Maven Install,可以项目路径下的target文件夹中找到打包好的jar包

拿到cmd中运行

 以上就是MyEclipse多Module的创建以及打包方式。

SpringBoot项目的启动类与上面的Hello方法类似,所以完全能够适用于多个SpringBoot项目的搭建与打包。

我们发现cloud、cloud-api、cloud-base-4000、cloud-operation-4001中都存在一个pom文件。其中

1、在cloud的pom文件中引入的依赖会作用到所有服务中,例如在cloud的pom文件中引入了slf4j依赖,则其

     他的服务都能直接调用slf4j

2、在cloud-api的pom文件引入的依赖在打包后才会加入到其他关联服务中,在开发时不能直接引用

3、base服务与operation服务之间的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>

这样每个服务都有一份这些依赖了,在每个服务下新建一个SpringBootApplication,那么每个服务都是SpringBoot服务了

idea的搭建

ideal确实很智能,操作比MyEclipse方便快捷得多,学会了MyEclipse创建多SpringBoot项目的话,ideal创建项目不成问题

不过ideal打包与MyEclipse有点不同,这里来单独介绍一下:

第一步:File—>Project Structure

第二步:如下图

第三步:选择一个module

第四步:选择启动类,如果是SpringBoot则选择SpringBootApplication作为启动类

第五步:这里需要注意,单选选择第二个;一定要将路径改为resources包下,不然META-INF会生成到类路径下,在打包的时候会找不到

第六步:开始打包

第七步:点击Build

第八步:在classes文件夹下可以找到jar包

至此结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

港联证券:2万元股票一进一出手续费?

股市生意中的手续费是出资者无法避免的一项费用。关于许多出资者来说&#xff0c;手续费的多少对出资收益有着重要的影响。本文将从多个视点分析2万元股票一进一出手续费&#xff0c;并讨论其对出资者和商场的影响。 首先&#xff0c;从出资者的视点来看&#xff0c;2万元股票…

数据分析必备原理思路(三)

文章目录 四、图文并茂的数据汇报与观点表达1. 什么是数据表达?2. 数据表达的目的是什么?3. 为什么要基于数据进行表达?4. 如何基于图表进行优质的数据表达&#xff1f;&#xff08;1&#xff09;提炼文字观点&#xff08;2&#xff09;制作完善图表a. 视觉映射原理与可视化…

偏微分方程为什么要先先验估计再求解的存在性,先验估计有什么用?

见知乎 https://www.zhihu.com/question/43549959?utm_sourceqq&utm_mediumsocial&utm_oi1315073218793488384

国产数据库达梦Dm8部署

点击上方蓝字关注我 1. 部署前工作 1.1 介质下载 下载地址&#xff1a;https://www.dameng.com/list_103.html 结合服务器类型选择对应版本&#xff1a; 1.2 环境检查 硬件环境要求 用户应根据 DM 及应用系统的需求来选择合适的硬件配置&#xff0c;如 CPU 的指标、内存及磁盘…

米软科技客户单病种上报量云南省第一

近日米软获悉&#xff0c;在云南省统计的单病种上报情况中&#xff0c;截止2021年11月15日&#xff0c;上线单病种系统不足半年的红河州第一人民医院&#xff08;云南省滇南中心医院&#xff09;以占全省上报总数5%的22950例&#xff0c;遥遥领先于同省各家二三级医院。 全省上…

SAP 让ALV表格修改后保存到数据库(1.设置图标事件;2.LVC_S_GLAY-EDT_CLL_CB字段直接实现)

SAP ALV报表输出后&#xff0c;用户更改ALV上可编辑的数据&#xff0c;然后保存回SAP内表去&#xff0c;这种需求有两种实现方式 1.给ALV输出界面设置额外工具条按钮来实现 2.ALV 函数 REUSE_ALV_GRID_DISPLAY_LVC 的参数 I_GRID_SETTINGS &#xff0c;设置 LVC_S_GLAY-EDT_CLL…

LibreOffice中如何插入公式

点击 插入-》对象-》公式对象&#xff0c;调出公式编辑界面&#xff1a; 可以在左侧的下拉列表中选择要插入的公式的种类&#xff1a; 例如&#xff0c;在下拉列表中选择“函数”&#xff0c; 选择要插入的函数&#xff0c;例如指数函数&#xff1a; 在右侧编辑窗口就可…

【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。(2023.10.27)

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

部署应用链太费心?Tanssi 教你轻松开发部署

如果你在构建一个跨链的去中心化交易所&#xff0c;需要聚合不同链的数据&#xff0c;或者想打造一个链上实时战略游戏&#xff0c;现有公链由于缺乏可定制性&#xff0c;都无法满足这样的需求&#xff0c;因为难以处理开发这些应用所需的处理量、数据聚合或隐私要求。因此&…

百度智能云获评Forrester中国市场人工智能/机器学习平台领导者

写在前面百度智能云AI平台&#xff0c;打造企业智能化转型的基础设施大模型时代&#xff0c;百度智能云AI平台迎来全面升级 写在前面 日前&#xff0c;国际权威咨询机构 Forrester 发布了最新的《The Forrester Wave™&#xff1a;中国市场人工智能/机器学习平台厂商评测&…

word2vec两种优化方式的联系和区别

总结不易&#xff0c;请大力点赞&#xff0c;感谢 上一个文章&#xff0c;Word2vec-负采样/霍夫曼之后模型是否等价-绝对干货是字节的面试真题&#xff0c;建议朋友们多看几遍&#xff0c;有问题及时沟通。 私下有几个朋友看完之后还是有点懵&#xff0c;又问了一下具体细节。…

云起无垠典型案例入选《2023软件供应链安全洞察》报告

近日&#xff0c;历时6个月&#xff0c;由ISC编制的《2023软件供应链安全洞察》报告&#xff08;以下简称《报告》&#xff09;正式对外发布。《报告》围绕软件供应链安全现状、技术内核、治理指南、落地实践展开&#xff0c;以期为行业从业者提供有价值的信息和洞见&#xff0…

港联证券:124份对外投资公告揭示:A股民营企业投资积极性上升

自“民营经济31条”发布以来&#xff0c;A股民营上市公司出资热心明显上升。据上海证券报记者不完全统计&#xff0c;7月至今&#xff0c;已有124家民营上市公司发布了对外出资公告&#xff0c;其间42家公司对外出资规划达10亿元以上&#xff0c;且不乏百亿级大单&#xff0c;最…

新能源下半场要拼“电池”,欣旺达动力胜算几何?

如今&#xff0c;续航焦虑、里程焦虑是新能源汽车避不开的话题。因此&#xff0c;电池作为续航的核心硬件&#xff0c;其质量的好坏自然也就成为了市场颇为关心的话题&#xff0c;与之相关的新能源电池厂商也受到了越来越多的关注。 其中&#xff0c;新能源电池厂商中的新秀—…

C++手写可扩展数组模板类

前言 仅做学习理解和参考&#xff01; // dome.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <functional> using namespace std; #include <vector> const i…

Vue项目引入百度统计的正确操作步骤,亲测有效!

1、平台获取统计代码 2、在head和body中分别添加以下代码 head: <script>var _hmt _hmt || [];</script>body: <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js…

NET-MongoDB的安装使用

一&#xff0e;下载 MongoDB 点击 Select package 选择自己所需版本后点击下载&#xff0c;本文选用Windows 6.0版本以上 二、配置MongoDB 在 Windows 上&#xff0c;MongoDB 将默认安装在 C:\Program Files\MongoDB 中。 将 C:\Program Files\MongoDB\Server\version_numbe…

汇编语言王爽第四版17.3完程可运行可调试

汇编语言王爽第四版17.3节完整程序&#xff0c;可调试&#xff0c;可运行。 最基本的字符串输入程序&#xff0c;具备以下功能&#xff1a; 1、在输入的同时需要显示这个字符串&#xff1b; 2、输入回车符后&#xff0c;一个字符串的输入结束&#xff1b; 3、能够删除已经输入…

增速4755%!撬动海外美妆市场,赛盈分销洞察美国市场年终布局方向!

2020年国货美妆扎堆出海&#xff0c;行业增速23%&#xff0c;市场增长翻了10倍&#xff0c;也是从这一年开始&#xff0c;国货美妆真正进入了“大航海时代”。 从埃森哲的数据报告里看到&#xff0c;今年全球美妆市场整体规模已超6000亿美元&#xff0c;若按照每年10%的增幅增长…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…