首页 > 其他分享 >SpringCloud微服务多应用脚手架的搭建与部署

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

时间:2023-10-27 10:32:03浏览次数:36  
标签:服务 SpringBoot api SpringCloud pom base 脚手架 cloud 搭建

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

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

MyEclipse

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

 

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

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

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

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

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

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

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

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

建立api项目如下:

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

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

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

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

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

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

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

项目结构如下:

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

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

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

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

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

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

第七步:打开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类就不会报错了,如下图:

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

同样,在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包

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

拿到cmd中运行

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

 以上就是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

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

第二步:如下图

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

第三步:选择一个module

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

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

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

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

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

第六步:开始打包

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

第七步:点击Build

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

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

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

至此结束!

 

标签:服务,SpringBoot,api,SpringCloud,pom,base,脚手架,cloud,搭建
From: https://blog.51cto.com/u_16309327/8051067

相关文章

  • 彩虹云商城搭建 自动发卡搭建
     彩虹云商城源码自动发卡搭建  演示 http://www.yundingxt.com:7003/ 彩红易支付自动发卡程序 联系WX:app1008610010   ......
  • 31-Vue脚手架-scoped样式
    我们先思考一个问题,如果对School和Student应用样式的话,一般是使用如下方式:src/components/School.vue<template><divclass="demo"><h2>学校名称:{{name}}</h2><h2>学校地址:{{address}}</h2></div></template><script&g......
  • 30-Vue脚手架-plugin插件
    plugin插件功能:用于增强Vue本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。 src/plugins.js(定义插件)//定义插件(默认暴露)exportdefault{install(Vue){console.log("@@@install")console.log(......
  • CentOS搭建内网KMS服务器
    1.yum换源[root@cwc~]#cd/etc/yum.repos.d/[[email protected]]#mkdirback[[email protected]]#mvCentOS-Linux-*back/[[email protected]]#wget-O/etc/yum.repos.d/CentOS-Linux-BaseOS.repohttps://mirrors.aliyun.com/repo/Centos-8.repo[root@cwc......
  • Redis 7.0 源码环境搭建与阅读技巧
    天下武功,无坚不摧,唯快不破!我的名字叫Redis,全称是RemoteDictionaryServer。有人说,组CP,除了要了解她外,还要给机会让她了解你。那么,作为开发工程师的你,是否愿意认真阅读此心法抓住机会来了解我,运用到你的系统中提升性能。我遵守BSD协议,由意大利人SalvatoreSanfilippo......
  • Elasticsearch 系列(一)- 环境搭建
    本章将和大家分享在Windows系统上如何搭建Elasticsearch的开发环境。话不多说,下面我们直接进入主题。一、安装Java的JDKElasticsearch其中最主要的开发语言就是 Java,所以我们在安装Elasticsearch之前,首先需要安装的就是Java的JDK,此处我选择安装的版本是JDK17。J......
  • django全体系0基础到高手4大体系50页md知识总结:第1章,从0到1django项目搭建
    当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源PythonWeb框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用完整版笔记直接地址:请移步这里共10章,31子模块,总计18647字Django框架主要内......
  • 方舟生存进化ARK个人服务器搭建教程保姆级​
    方舟生存进化ARK个人服务器搭建教程保姆级大家好我是艾西,在很久之前我有给大家分享过方舟生存进化的搭建架设教程,但时间久远且以前的教程我现在回头看去在某些地方说的并不是那么清楚。最近也是闲暇无事打算重新巩固下方舟生存进化的搭建架设教程,故此出这篇文章教程。准备工具:服务......
  • windows下搭建yii2框架的安装与运行
    安装命令composercreate-projectyiisoft/yii2-app-basicbasic报错信息(curlerror28whiledownloadinghttps://asset-packagist.org/p/provider-latest/xxx.json:Timeoutwasreached)打开composer.json发现是下载的数据被墙掉了处理添加下载数据源切换到根目录......
  • 使用centos7搭建NTP服务器
    一、安装NTP服务yum-yinstallntpntpdata二、设置防火墙策略firewall-cmd--zone=public--add-port=123/udp--permanent #开放UDP123端口firewall-cmd--reload三、编辑NTP配置文件vim/etc/ntp.conf添加:server210.72.145.44prefer   #优先使用国家授时服务器serve......