SpringCloud应用idea实现可相互调用的多模块程序详解

目录
  • 版本选择
  • 技术选型
  • spring boot单体模块的搭建
    • 创建父工程
    • 父工程的pom文件
    • 创建子模块
  • RestTemplate
    • 使用步骤
  • 系统重构(子模块间重复代码的抽取)

版本选择

  学习spring cloud之前需要有一定的spring boot基础,按我现阶段的了解就是,spring boot属于是做业务开发的,所谓的微服务就是将一个大的项目分为是很多的使用spring boot进行开发的单体项目。当然如果没有后续的话,那么这一个项目也就成了一盘散沙,没有办法真正的实现它的作用,于是就需要使用spring cloud将所有的spring boot单体项目整合起来,形成一个完整的项目,从而发挥它最大的作用。

  既然在一个项目中涉及到了两种框架技术的使用,那么就需要考虑这两种框架会不会产生冲突。那么我们应该如何查看这两种框架的版本适用呢?我们可以参考spring cloud官网给出的答案,这个文档是实时更新的,不用担心过时的问题。https://spring.io/projects/spring-cloud,打开链接直接向下划即可找到

  官网在这里只是提供了一个相对模糊的版本对应,想要更加具体的版本对应可以参考以下网站https://start.spring.io/actuator/info,将网站返回的JSON字符串经过工具的转换即可发现其中的版本对应

  当然,上述两种方法都是在boot和cloud技术版本选择时的一种参考,真正确定下来还是要看cloud官网上面的参考doc文档,点进去的Supported Boot Version才是最终敲定的依据

技术选型

  前面讲到spring cloud是一个微服务的框架,既然是微服务就说明我们需要使用技术控制各个单体服务之间的通信,还有不同服务的调用等。于是就涉及到了这些不同功能的技术选型,我们都知道技术是在不停迭代更新的,有很多的技术停更淘汰,与此同时也有很多的技术更新迭代出来,于是我们应该知道不同的功能应该选用哪种可行的技术。

服务注册中心:

  • Eureka
  • Zookeeper
  • Consul
  • Nacos √

服务调用:

  • Ribbon
  • LoadBalancer
  • Feign
  • OpenFeign √

服务降级:

  • Hystrix
  • Resilience4j
  • Sentinel √

服务网关:

  • Zuul
  • Zuul2
  • Gateway √

服务配置:

  • Config
  • Nacos √

服务总线:

  • Bus
  • Nacos √

spring boot单体模块的搭建

创建父工程

project项目创建

修改项目名 -> 修改项目存储地址 -> 修改maven配置 -> finished

配置字符编码格式

配置注解生效激活

配置项目的Java的版本

父工程的pom文件

  父pom中的并不会引入相应的jar包,而是定义了版本号供子模块使用,只有子模块导入依赖坐标的时候(如果父pom中有,可以不指定版本号)才会引入相应的jar包

<?xml version="1.0" encoding="UTF-8"?>
<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>
    <groupId>项目的组id</groupId>
    <artifactId>项目名称</artifactId>
    <version>项目版本</version>
    <packaging>pom</packaging>
    <!--统一管理设置jar包的版本-->
    <properties>
        ..........
    </properties>
    <!--依赖传递:父pom文件中的依赖版本会被子模块自动继承,除非子模块中自己声明版本,否则就使用父pom的版本,同理,父pom的依赖版本升级,子模块也会升级到相应的版本-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                .......
            </dependency>
				......
            <dependency>
                .......
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

创建子模块

  在父工程上右键,新建一个model

创建之后需要配置子模块的配置文件,也就是子模块的resources文件夹下的application.yml文件,主要就是配置端口号和数据库相关

server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: …… ……… ………
    username: …… ……
    password: …… …… ……
mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.xiaochen.springcloud.entities

然后就是创建相应的mapper、service、serviceImpl、映射文件

RestTemplate

  Rest Template就是一种对HTTPClient的封装,是Spring提供的用于访问Rest服务的客户端模板工具集,其内部提供了多种便捷的用于访问远程http服务的方法,主要就是用于实现微服务项目中几个服务之间的相互调用。

使用步骤

使用配置类向容器中注入RestTemplate对象

/**
 * @ClassName: ApplicationContextConfig
 * @Description: 程序配置类
 * @author: chenhao
 * @date: 2022/7/17
 */
@Configuration
public class ApplicationContextConfig {
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

  在需要使用它的地方用@Resource注入对象,然后就是调用api实现相应的功能,全部api参考以下链接:链接

系统重构(子模块间重复代码的抽取)

  创建一个公共模块,将公共的代码和依赖全部抽取到这个公共模块中,然后别的模块如果想要使用公共模块的代码,就必须先对公共模块的maven进行clean和install,然后在pom文件中导入这个公共模块的依赖即可使用公共部分代码

到此这篇关于SpringCloud应用idea实现可相互调用的多模块程序详解的文章就介绍到这了,更多相关SpringCloud多模块程序内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud如何搭建一个多模块项目

    在spring cloud系列章节中,本来已经写了几个章节了,但是自己看起来有些东西写得比较杂,所以重构了一下springcloud的章节内容,新写了本章节,先教大家在工作中如何搭建一个多模块的springcloud项目. 本章及后面章节,我们使用的开发环境是 spring tool suite (sts) + maven (当然你也可以使用IDEA + Gradle,目前使用的公司也很多). 一.新建一个父maven project模块 File->new->other->maven-

  • 在idea环境下构建springCloud项目

    springCloud是基于springboot搭建的微服务.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署. spring cloud官方文档:http://projects.spring.io/spring-cloud/ spring cloud 中文网 : https://springcloud.cc/ 最终搭建后的工程源代码:http

  • idea创建springboot项目和springcloud项目的详细教程

    一:创建springboot项目 1.选择File –> New –> Project –>Spring Initialer –> 点击Next 2.填写项目相关的信息,–>点击next 3.选择web –> web,–>点击next 4.填写项目名和项目位置,–>点击finish 5.会自动生成一个Application类,加上一个@RestController注解就可以写方法了 6.启动Application类中的main()方法,浏览器输入localh

  • 使用Idea简单快速搭建springcloud项目的图文教程

    前言: 开发工具:IntelliJ IDEA 2020版 (Ultimate Edition) 框架:spring boot .spring cloud 搭建一套spring cloud微服务系统,实现服务之间的调用. 需要搭建一个父工程springcloud-test,一个服务注册中心eureka-server,两个微服务cloud-client,cloud-provider. 两个微服务均注册到服务注册中心. 一.搭建父项目 2. 3. (1)删掉src目录 (2)定义pom.xml文件 <

  • 详解Idea SpringBoot搭建SpringCloud的准备工作(推荐)

    1.编码设置 2.开启注解(让注解生效) 3.本项目编译运行版本 4.把不需要的文件隐藏(注意可以不用做,做了可以让项目看起来更加整洁干净清晰明了) 以上就是搭建一个SpringCloud之前的步骤. 二.SpringCloud父工程的依赖 <groupId>org.example</groupId> <artifactId>spring-cloud</artifactId> <version>1.0-SNAPSHOT</version&g

  • SpringCloud应用idea实现可相互调用的多模块程序详解

    目录 版本选择 技术选型 spring boot单体模块的搭建 创建父工程 父工程的pom文件 创建子模块 RestTemplate 使用步骤 系统重构(子模块间重复代码的抽取) 版本选择   学习spring cloud之前需要有一定的spring boot基础,按我现阶段的了解就是,spring boot属于是做业务开发的,所谓的微服务就是将一个大的项目分为是很多的使用spring boot进行开发的单体项目.当然如果没有后续的话,那么这一个项目也就成了一盘散沙,没有办法真正的实现它的作用,

  • Java远程调用组件Feign技术使用详解

    目录 一. 概要 二. Feign简介 1. 概念 2. 功能 三. 服务提供者 1. 添加依赖 2. 配置文件 3. 启动类 4. 控制层 5. POJO 四. 服务消费者 1. 添加依赖 2. 配置文件 3. 启动类 4. Feign服务 5. 控制层 五. 测试 1. 测试get请求 2. 测试post请求json数据格式 3. 测试头部中包含信息 一. 概要 我们知道,现在最火且最有技术含量的技术莫过于SpringCloud微服务了,所以今天壹哥就带大家来学习一下微服务的核心的组件之一,

  • C++调用Python基础功能实例详解

    c++调用Python首先安装Python,以win7为例,Python路径为:c:\Python35\,通过mingw编译c++代码. 编写makefile文件,首先要添加包含路径: inc_path += c:/Python35/include 然后添加链接参数: ld_flag += c:/Python35/libs/libpython35.a 在源文件中添加头文件引用: #include "Python.h" Python解释器需要进行初始化,完成任务后需要终止: void s

  • 对YOLOv3模型调用时候的python接口详解

    需要注意的是:更改完源程序.c文件,需要对整个项目重新编译.make install,对已经生成的文件进行更新,类似于之前VS中在一个类中增加新函数重新编译封装dll,而python接口的调用主要使用的是libdarknet.so文件,其余在配置文件中的修改不必重新进行编译安装. 之前训练好的模型,在模型调用的时候,总是在 lib = CDLL("/home/*****/*******/darknet/libdarknet.so", RTLD_GLOBAL)这里读不到darknet编译

  • 对python调用RPC接口的实例详解

    要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安装的python包如下: 1.grpc安装 pip install grpcio 2.grpc的python protobuf相关的编译工具 pip install grpcio-tools 3.protobuf相关python依赖库 pip install protobuf 4.一些常见原型的生成

  • PHP封装curl的调用接口及常用函数详解

    如下所示: <?php /** * @desc 封装curl的调用接口,post的请求方式 */ function doCurlPostRequest($url, $requestString, $timeout = 5) { if($url == "" || $requestString == "" || $timeout <= 0){ return false; } $con = curl_init((string)$url); curl_setop

  • 使用C++调用Python代码的方法详解

    一.配置python环境问题 1.首先安装Python(版本无所谓),安装的时候选的添加python路径到环境变量中 安装之后的文件夹如下所示: 2.在VS中配置环境和库 右击项目->属性->VC++目录 1)包含目录: Python安装路径/include 2)库目录: Python安装路径/libs 右击项目->属性->连接器->输入->附加依赖库 debug下: python安装目录/libs/python37_d.lib release下: python安装目录

  • Vue子组件调用父组件方法案例详解

    一.直接在子组件中通过this.$parent.event来调用父组件的方法 <!-- 父组件 --> <template> <div> <child></child> </div> </template> <script> import child from '~/components/dam/child'; export default { components: { child }, methods: {

  • Python调用百度api实现语音识别详解

    最近在学习python,做一些python练习题 github上几年前的练习题 有一题是这样的: 使用 Python 实现:对着电脑吼一声,自动打开浏览器中的默认网站. 例如,对着笔记本电脑吼一声"百度",浏览器自动打开百度首页. 然后开始search相应的功能需要的模块(windows10),理一下思路: 本地录音 上传录音,获得返回结果 组一个map,根据结果打开相应的网页 所需模块: PyAudio:录音接口 wave:打开录音文件并设置音频参数 requests:GET/POS

  • SQLServer触发器调用JavaWeb接口的过程详解

    这几天接到一个需求需要吧不同系统的数据库进行同步,需要我做一个中间平台进行连接,瞬间就想到了触发器调用接口然后通过API进行传递再写入另一个数据库. sqlServer触发器调用JavaWeb接口 1.开启 Ole Automation Procedures sqlServer要想调用web接口,就要使用自带的存储过程.而这些存储过程2005版本以后默认时关闭的,所以要先开启. sp_configure 'show advanced options', 1; GO RECONFIGURE; GO

随机推荐