springboot单体项目转springcloud保姆级教程

这篇具有很好参考价值的文章主要介绍了springboot单体项目转springcloud保姆级教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

当学习吧,我有个开源项目是魔改了ruoyi-vue的,加入了我喜欢的技术以及删除了一些我认为一个系统并不一定是需要的功能,有兴趣的朋友可以先看下这个单体项目,可以更加理解等会儿要演示的流程:

https://gitee.com/Lewis-qq398529803/lewis-springboot-vue.git

流程

不废话直接流程。

这是原本的单体项目项目结构:

springboot单体项目转springcloud保姆级教程

1 调整项目结构

首先聚合项目大家应该懂,首先就是调整成聚合项目的模样,在嵌入springcloud完成之前,不要进行功能的拆分,会导致工作量严重增加,当然老手就不用在意这句话该咋搞咋搞。

新增module
springboot单体项目转springcloud保姆级教程

springboot单体项目转springcloud保姆级教程

考虑到正常项目中,必然有一个专门提供接口被调用的模块,于是首先创建一个lewis-api模块将当前所有的内容放到其中,这样首先保证项目跟之前没有大的区别也是保证能运行的情况下再做下一步。

创建完成后的项目结构:

springboot单体项目转springcloud保姆级教程
最终项目结构:

springboot单体项目转springcloud保姆级教程

2 引入所需的jar包

第一步自然是引入包,其中包括了以下:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-dependencies</artifactId>
	<version>Hoxton.SR8</version>
	<type>pom</type>
</dependency>
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
	<version>2.2.5.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
	<version>2.1.3.RELEASE</version>
</dependency>

要注意的是:spring-cloud-dependencies的版本是跟springboot的版本有兼容问题的

springboot单体项目转springcloud保姆级教程

具体可以去看:https://spring.io/projects/spring-cloud

3 添加配置

# Spring配置
spring:
  application:
    # 服务名
    name: lewis-api
  cloud:
    # nacos配置
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848

4 启动类添加注解

项目启动类添加两个注解:

  • @EnableDiscoveryClient(注册中心注册发现)
  • @EnableFeignClients(feign客户端调用)
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableDiscoveryClient
@EnableFeignClients
public class LewisApplication {
    public static void main(String[] args) {
        SpringApplication.run(LewisApplication.class, args);
        System.out.println("============================= Lewis系统启动成功 =============================\n");
    }
}

到这一步,是可以跟之前单体项目一模一样的直接启动的,没有任何影响。

注意:如果你跟我用的都是idea,有几率出现缓存卡死爆红找不到主类的问题,这个时候直接退出idea,把项目的关于idea的配置文件:.iml、.idea、target等等直接物理删除,重新启动就ok了。

springboot单体项目转springcloud保姆级教程

启动成功后,可以在nacos客户端看到刚刚配置的服务名:

springboot单体项目转springcloud保姆级教程

虽然目前你可能有些懵,但微服务只需要你稍微改变一下下观念,就可以很简单的懂了,不保证你精通,但会用是没问题的。

观念

以下全是个人的理解,说的不对的地方可以指出。

首先我一开始呈现的是单体项目,可以理解为编程早期的模样,因为当时的业务逻辑并不会过于复杂,代码量没上来所以单体项目更适合快速开发的效率。

但慢慢的越来越多的功能的加入,会开始发现项目开始臃肿,并且每次部署都需要对线上的版本进行停服维护等操作,以及开发过程中开发人员的相互干扰开始慢慢的体现出来。

那么这个时候就推出了模块化的思想,也就是聚合工程。但聚合工程的解耦能力也并不是特别ok,会经常需要调用其他模块的某些接口等,那么这种情况下,通常程序猿们会考虑不去调用controller层,而是去调用service层,那么这里的耦合度就开始加强了,这种方法使用多了后,聚合工程的弊端也就提现出来了。

那么这个时候微服务的思想就开始出现并且流行起来了,当我们把服务分的足够细,细到甚至某个业务都成为一个小小的服务成为一个接口的时候,任何地方都可以通过调用接口也就是类似于http请求这般调用所需要的服务,那么耦合度会大大降低,同时一个服务的宕机、重启、维护等等行为不会对整个系统有重大的影响,并且服务可以进行集群化管理,更加防止某个服务的死亡等等。

那么这时候就可以开始微服务具体需要做什么了:

首先,注册中心的概念:服务的注册与发现。或许通过字面意思也就可以似懂非懂了,总结一句话就是将一个服务当做一个对象放到注册中心,而对象就需要有一个名字,那么同一个注册中心的其他服务就可以利用这个名字,来调用自身需要的接口。

为什么需要这么操作?直接http请求不是少了这么多麻烦的事情?

原因其实很简单:

  1. 一条http请求你可以记,十条你可以用常量来记,十万条呢?你无法直接在代码中对这种常量进行大量的编写且不冗余,这种时候有个工具帮你记录就会显得非常舒适
  2. http并不可靠,对方不给你返回数据或许是它网速不行或许是你网速不行或许也有可能是它已经宕机了,谁来管?而注册中心是可以对服务进行心跳检测等操作判断服务是否存活,确保系统的健壮性和维护的及时与否

总结

或许有很多说的不对的地方,以后或许我也会发现自己哪个地方理解是错误的,但并不影响我这一整条的逻辑是走得通的,学习过程中总有一堆堆的错误等着未来的我来嫌弃现在的自己。

所以朋友们可以借鉴,可以听着乐,毕竟我写文章通常也是写给自己看的。

下课。文章来源地址https://www.toymoban.com/news/detail-433574.html

到了这里,关于springboot单体项目转springcloud保姆级教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023全网最细最全保姆级gitlab+Jenkins+maven自动化部署springboot项目教程

    如果没有Linux基础请仔细看好每一个步骤,避免出错,从0到1带你搭建自动化部署环境,包括服务器安装,自动化部署所需各类软件安装配置,详细贴出每一步,不断步骤,让你一次搭建部署完成,希望这篇文章能给大家带来一定的帮助,话不多说开始整 2.0 CentOs安装 2.0.1 下载VM虚拟机 我直

    2024年02月08日
    浏览(57)
  • 【企业级SpringBoot单体项目模板 】——Mybatis-plus自动代码生成

    😜 作           者 :是江迪呀 ✒️ 本文 : SpringBoot项目模版 、 企业级 、 模版 ☀️ 每日   一言 : 我们之所以这样认为,是因为他们这样说。他们之所以那样说,是因为他们想让我们那样认为。所以实践才是检验真理的唯一准则。 上回 我们说了一些开发规范

    2024年02月07日
    浏览(48)
  • 【分布式微服务专题】从单体到分布式(四、SpringCloud整合Sentinel)

    相对来说,Sentinel的学习难度比之之前的Dubbo要低了不少。不过在学习过程中也遇到了一些认知局限带来的困难。比如,虽然还是学习了Sentinel,但是不知道生产环境该如何配置才是最佳的状态。 说到底,Sentinel还是没有提供很好的文档支持。比如:生产最佳实践方案。 官方也

    2024年01月23日
    浏览(49)
  • 如何将Springboot项目升级成Springcloud项目(有图详解)

    本文以nacos为例 分为以下几个步骤 1. 下载nacos软件 2. pom文件配置 3. application.yml文件配置 4. 代码调用 5. 效果展示 1.1 下载nacos-server-2.2.0-BETA这个版本 nacos-server-2.2.0-BETA 1.2 修改nacos配置文件 打开bin目录下的startup.cmd,将第26行的 set MODE=“cluster” 改为: set MODE=“standalone” 1.3 双

    2024年02月14日
    浏览(36)
  • 初识SpringBoot -- SpringBoot入门保姆级教程(一)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月07日
    浏览(56)
  • SpringBoot配置 -- SpringBoot快速入门保姆级教程(二)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月08日
    浏览(32)
  • 初识SpringBoot -- SpringBoot快速入门保姆级教程(一)

    为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。 (博客的参考源码可以在我主页的资源里找到,如果在学习的

    2024年02月08日
    浏览(29)
  • springboot 设置自定义启动banner背景图 教程

    Spring Boot中的banner是在应用程序启动时显示的一个ASCII艺术字符或文本。它被用来给用户展示一些关于应用程序的信息,例如名称、版本号或者公司标志等。 使用Spring Boot的默认设置,如果项目中有一个名为“banner.txt”的文件放置在classpath下的“/META-INF”目录中,那么这个文

    2024年02月12日
    浏览(30)
  • SpringBoot 快速入门(保姆级详细教程)

    作者:大三的土狗 专栏:SpringBoot入门到精通 SpringBoot 时 Spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。 SpringBoot化繁为简,使开发变得更加的简单迅速。   Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及

    2023年04月19日
    浏览(40)
  • SpringBoot 监控神器——Actuator 保姆级教程

    pom.xml info beans conditions heapdump shutdown mappings threaddump loggers 端点 metrics 端点 自定义Endpoint 自定义监控端点常用注解 使用Filter对访问actuator做限制 Spring Boot Monitor做监控页面 SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境

    2024年02月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包