SpringCloud微服务项目实战(一)---搭建SpringBoot项目

SpringBoot与SpringCloud的关系

  1. Spring Boot主内,能够快速搭建,快速开发单个微服务,搞定了数据层访问、RESTful 接口、日志组件、内置容器等等基础功能
  2. Spring Cloud主外,轻松实现服务注册与发现、负载均衡、熔断降级、配置管理等
  3. Spring Boot是SpringCloud的基础,两者分工合作、合二为一,构建了微服务领域的全家桶解决方案

环境配置

  1. 安装java,推荐使用 JDK8 最新小版本或者 OpenJDK16 的最新小版本
  2. 安装maven,推荐使用 Maven 3.6 或以上的版本
  3. 下载IntelliJ IDEA
  4. 在IntelliJ IDEA 中安装 Lombok(File-Settings-Plugins-搜索Lombok)
  5. 安装MySQL数据库,MySQL官网
  6. 下载DB可视化工具DataGrip(navicat、workbench亦可),DataGrip官网DataGrip使用教程
  7. 安装Rabbit MQ,RabbitMQ官网RabbitMQ安装使用教程解决ERROR: distribution port 25672 in use by another node: rabbit@
  8. 安装Redis,Redis安装教程

开始搭建SpringBoot项目

先看一下整体效果和模块
在这里插入图片描述
做个解释,分了三个模块:
① coupon_template_serv 优惠券模板服务,用来创建、查找优惠券
② coupon_calculation_serv 优惠计算服务,根据用户的商品和优惠券来计算订单优惠后的金额
③ coupon_customer_serv 用户拂去,用来领券、下单,也是对用户开放的接口,依赖前两个服务来完成

这里详细记录一下coupon_template_serv这个模块的搭建过程,其他两个类似

1. 新建项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将新建后多余的文件全部删除,只剩下这三个即可
在这里插入图片描述

2. 新建Module
方法与步骤一相同,新建后同样将多余的删除,因为还要建子模块,所以父模块下除了xxx.iml和xxx.pom也都删掉。
在coupon-template-serv下建3个子模块分别是api(存放公共 POJO 类或者对外接口)、dao(存放数据库实体类和 Dao 层)、impl(核心业务逻辑的实现层,对外提供 REST API),如下图
在这里插入图片描述

  1. 添加maven依赖
    从上到下,先修改最外层的项目的pom.xml
	<!--指定父级依赖 spring-boot-starter-parent 里定义的 Spring Boot 组件版本信息就会被自动带到子模块中   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
    </parent>


    <!--maven 的打包类型有三种:jar、war 和 pom。当我们指定 packaging 类型为 pom 时,意味着当前模块是一个“boss”-->
    <packaging>pom</packaging>
    
    <!-- 指定子模块   -->
    <modules>
        <module>coupon-template-serv</module>
        <module>coupon-calculation-serv</module>
        <module>coupon-customer-serv</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!--省略部分依赖项 -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.20</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
`

再依次修改coupon-template-serv,template-api,template-dao,template-impl的依赖项,其中需要指定各自的parent和子模块

  1. 依次搭建子模块
    template-api,template-dao,template-impl,代码参考

  2. 创建启动类
    在这里插入图片描述

  3. 创建配置文件 application.yml
    它位于 src/main/resources 文件夹下。需要指定端口号、数据源等等配置

  4. 启动项目
    运行Application,控制台可查看启动日志

  5. 调用接口
    postman中访问 localhost:端口号/url,即可通过controlle层r寻址-service层处理-dao层访问数据库简单完成整个闭环

问题总结

  1. 问题:新建子模块后,pom文件的图标是xml文件标识,而不是m标识,而且目录结构是com-xxx-xxx这样一层一层的,而不是package包名一起的
    解决:idea工作台左侧右键pom文件,点击Add As Maven Project,如下图
    在这里插入图片描述

  2. 问题:删除子模块后,再新增同样名称的子模块,pom文件不生效且出现了删除线。
    解决:File–Settings–Build–Maven–IgnoredFiles中将对勾取消,如下图
    在这里插入图片描述

  3. 问题:子模块下再加子模块后,没有出现新的模块名,且目录层级乱了,把上级模块的pom也覆盖了。
    解决:添加Module选择的是Spring Initializr类型时,再最后一步存储位置设置中的Content root和Module_file location要加上子模块名称,如下图(也有人说添加module时选择maven类型,但这样的话在src-java下就没有默认Application类创建了)
    在这里插入图片描述

  4. 问题:@Table(name = “coupon_template”)中提示Cannot resolve table ‘coupon_template’
    解决:Idea连接数据库,并在报错处指定数据源
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 问题:Nacicat连接本地数据库,出现1251错误client does not support authentication protocol requested by server
    解决:参考这里

  6. 问题:SpringBoot项目启动成功,但使用postman调接口时报404
    分析:找不到路径,controller未生效。
    解决:将com.local.coupon.template.templateimpl改为com.local.coupon.template。SpringBoot会扫描到com.local.coupon.template包及其子包下面的内容,扫描路径也无需指定(即可以去掉@ComponentScan注解)
    在这里插入图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
项目是采用目前比较流行的SpringBoot/SpringCloud构建微服务电商项目项目叫 《果然新鲜》,实现一套串联的微服务电商项目。完全符合一线城市微服务电商的需求,对学习微服务电商架构,有非常大的帮助,该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloud各自组件、分布式基础设施等实现一套完整的微服务解决方案。 项目使用分布式微服务框架,涉及后台管理员服务、地址服务、物流服务、广告服务、商品服务、商品类别服务、品牌服务、订单服务 、购物车服务、首页频道服务、公告服务、留言服务、搜索服务、会员服务等。  系统架构图   SpringBoot+SpringCloud+SSM构建微服务电商项目使用SpringCloud Eureka作为注册中心,实现服务治理使用Zuul网关框架管理服务请求入口使用Ribbon实现本地负载均衡器和Feign HTTP客户端调用工具使用Hystrix服务保护框架(服务降级、隔离、熔断、限流)使用消息总线Stream RabbitMQ和 Kafka微服务API接口安全控制和单点登录系统CAS+JWT+OAuth2.0分布式基础设施构建分布式任务调度平台XXL-JOB分布式日志采集系统ELK分布式事务解决方案LCN分布式锁解决方案Zookeeper、Redis分布式配置中心(携程Apollo)高并发分布式全局ID生成(雪花算法)分布式Session框架Spring-Session分布式服务追踪与调用链Zipkin项目运营与部署环境分布式设施环境,统一采用Docker安装使用jenkins+docker+k8s实现自动部署微服务API管理ApiSwagger使用GitLab代码管理(GitHub  GitEE)统一采用第三方云数据库使用七牛云服务器对静态资源实现加速 开发环境要求JDK统一要求:JDK1.8Maven统一管理依赖 统一采用Docker环境部署编码统一采用UTF-8开发工具IDEA 或者 Eclipse 
### 回答1: 2019年黑马项目-畅购商城springcloud微服务实战是一门以实战为主的课程,旨在通过项目实践的方式,帮助学员深入理解和掌握SpringCloud微服务架构以及相关技术的应用。 课程的主要内容包括搭建基础的微服务架构、使用SpringCloud构建服务注册与发现、实现服务间的负载均衡、实现分布式配置中心、服务间的调用与容错处理、使用网关统一接入服务等。通过这些实战练习,学员不仅能够熟悉SpringCloud架构与组件,还能够了解微服务架构下的常见问题与解决方案。 畅购商城项目是一个典型的电商应用,通过实现该项目,学员可以接触到真实的业务场景与需求,并能够将所学知识应用到实际项目中。课程中通过模块化的方式逐步完善商城的功能,包括用户注册登录、商品浏览、购物车管理、订单生成与支付等。通过这些实践,学员除了掌握SpringCloud微服务的开发技术,还能够了解和掌握电商项目的开发流程和注意事项。 该课程的目标是让学员通过实战项目,全面了解和掌握SpringCloud微服务架构的设计与开发,在此基础上能够独立完成具有较高要求的微服务项目。通过参与实战项目的过程,学员还能够提升团队协作能力、解决问题的能力以及项目管理能力。 通过这门课程的学习,学员将会对SpringCloud微服务架构有更深入的理解,并能够将这些知识应用到实际项目中,提高自己在微服务开发领域的竞争力。 ### 回答2: 2019年黑马项目-畅购商城springcloud微服务实战是一个基于springcloud微服务架构的商城项目。该项目的目标是通过运用微服务的理念和技术,构建一个高可用、可扩展的商城系统。 在该项目中,使用了springcloud的多个组件,如Eureka注册中心、Feign负载均衡、Ribbon客户端负载均衡、Hystrix服务降级和容错、Zuul网关等。这些组件共同协作,实现了系统的弹性伸缩和高可用性。 畅购商城的功能包括商品展示、购物车、订单管理、支付、用户管理等。通过将这些功能拆分成独立的微服务,使得系统更加灵活和可维护。同时,使用分布式事务和消息队列来保障数据的一致性和可靠性。 在项目的开发过程中,采用了敏捷开发的方法,以迭代的方式进行开发和测试。通过使用Jenkins进行持续集成和部署,保证了代码的质量和系统的稳定性。 在项目的实战过程中,面临了许多挑战和困难,如微服务之间的通信、服务的负载均衡、服务的容错等。但通过团队的共同努力和不断的学习,最终成功地完成了该项目的开发和部署。 在该项目的实施过程中,不仅学到了springcloud微服务架构的相关知识和技术,还体会到了团队合作和解决问题的能力。该项目的成功实施,不仅为公司带来了商业价值,也提升了团队的技术水平和项目管理能力。 ### 回答3: 2019年黑马项目-畅购商城springcloud微服务实战是一个以Spring Cloud为基础的微服务项目微服务架构是一种将应用拆分成多个小型服务的架构模式,这些服务可以独立开发、部署、扩展和管理。 畅购商城项目使用了Spring Cloud的一系列子项目,如Eureka、Ribbon、Feign、Hystrix、Zuul等,来实现各个微服务之间的通信、负载均衡、服务降级与熔断等功能。 在项目中,我们会通过Eureka来实现服务的注册与发现,每个微服务都会向Eureka注册自己的地址,其他微服务可以通过Eureka来发现并调用这些服务。而Ribbon则负责实现客户端的负载均衡,可以轮询、随机、加权等方式分发请求。 Feign是一种声明式的HTTP客户端,它简化了服务间的调用方式。我们只需编写接口,并通过注解来描述需要调用的服务和方法,Feign会自动实现远程调用。 Hystrix是一个容错机制的实现,可以通过断路器来实现服务的降级与熔断,当某个服务出现故障或超时时,Hystrix会快速响应并返回一个可控制的结果,从而保证系统的稳定性。 另外,Zuul作为微服务网关,可以实现请求的统一入口和路由转发,提高系统的安全性和性能。 通过这些Spring Cloud的组件,畅购商城项目可以实现高可用、容错、自动扩展等优质的微服务架构。 总之,2019年黑马项目-畅购商城springcloud微服务实战是一个基于Spring Cloud微服务项目,通过使用Spring Cloud的各个子项目,可以实现微服务之间的通信、负载均衡、服务降级与熔断等功能,为项目的开发、部署和管理提供了便利。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaobai178

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值