# SpringCloud入门 **Repository Path**: lkyuan4/spring-cloud-demo ## Basic Information - **Project Name**: SpringCloud入门 - **Description**: SpringCloud入门 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-21 - **Last Updated**: 2022-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Spring Cloud 微服务新手入门 - 概述:本文适用于新入门的童鞋参考,一步步创建一个新的Spring Cloud项目。 ## 一、配置注册中心 1. 配置 nacos 注册中心 - 下载地址 https://nacos.io/zh-cn/index.html 2. 解压后在bin目录windows下双击startup.cmd 启动,停止使用shutdown.cmd ![输入图片说明](https://foruda.gitee.com/images/1666344286261053784/d802c350_9051806.png "1.png") ![输入图片说明](https://foruda.gitee.com/images/1666344314052243858/9d91acf5_9051806.png "2.png") 3. 验证 - http://localhost:8848/nacos/index.html - 默认帐号密码均为 nocos ![输入图片说明](https://foruda.gitee.com/images/1666344335236710785/fbfe2d7e_9051806.png "3.png") ## 二、新建测试项目 1. 目录结构 - demo - demo-gateway #网关模块 8000 - demo-test #测试模块 8001 ![输入图片说明](https://foruda.gitee.com/images/1666344364451259833/50ed0624_9051806.png "4.png") 2. 步骤 - 1)创建demo - File->New->Project ![输入图片说明](https://foruda.gitee.com/images/1666344390374752913/a18fe153_9051806.png "5.png") - 选择Maven,对应的SDK版本,然后下一步 ![输入图片说明](https://foruda.gitee.com/images/1666344406114239063/12c00581_9051806.png "6.png") - 输入项目名称,选择目录路径,填写对应的信息,然后完成 ![输入图片说明](https://foruda.gitee.com/images/1666344419742870887/cb4c3d11_9051806.png "7.png") - 修改pom.xml文件(参考) ``` 4.0.0 org.example demo pom 1.0-SNAPSHOT demo-gateway demo-test org.springframework.cloud spring-cloud-dependencies 2020.0.3 pom import com.alibaba.cloud spring-cloud-alibaba-dependencies 2021.1 pom import com.alibaba.nacos nacos-client 2.0.3 org.springframework.boot spring-boot-dependencies 2.5.3 pom import org.springframework.cloud spring-cloud-starter-bootstrap ``` - 2)创建demo-gateway模块 - 在当前项目目录下,右键->New->Module ![输入图片说明](https://foruda.gitee.com/images/1666344442723962838/e99791c1_9051806.png "8.png") - 选择对应SDK,然后下一步 ![输入图片说明](https://foruda.gitee.com/images/1666344465464718672/b7f85048_9051806.png "9.png") - 填写名称等信息 ![输入图片说明](https://foruda.gitee.com/images/1666344509254433342/92c90326_9051806.png "10.png") - 修改pom.xml文件(参考) ``` demo org.example 1.0-SNAPSHOT 4.0.0 demo-gateway org.springframework.cloud spring-cloud-starter-gateway com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config org.springframework.cloud spring-cloud-starter-openfeign org.springframework.cloud spring-cloud-starter-loadbalancer org.springframework.boot spring-boot-starter-actuator ``` - 在java目录新建包com.demo.gateway及启动类 GatewayApplication.java ``` package com.demo.gateway; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); System.out.println("网关启动成功"); } } ``` - 在resources新建bootstrap.yml文件 ``` # Tomcat server: port: 8000 # Spring spring: application: # 应用名称 name: demo-gateway profiles: # 环境配置 active: dev main: allow-bean-definition-overriding: true cloud: nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} ``` - 在nacos配置中心 http://127.0.0.1:8848/nacos/ 配置demo-gateway-dev.yml ``` spring: cloud: gateway: discovery: locator: lowerCaseServiceId: true enabled: true routes: # 系统模块 - id: demo-test uri: lb://demo-test predicates: - Path=/test/** filters: - StripPrefix=1 ``` ![输入图片说明](https://foruda.gitee.com/images/1666344547184496959/33394d46_9051806.png "11.png") - 启动 ![输入图片说明](https://foruda.gitee.com/images/1666344562614073686/a27a3956_9051806.png "12.png") - 此时在nacos配置中心的服务管理-服务列表可看到demo-gateway服务 ![输入图片说明](https://foruda.gitee.com/images/1666344578104222664/55dbc777_9051806.png "13.png") - 3)创建demo-test模块 - 创建步骤参考demo-gateway模块,下面主要列代码及配置 ![输入图片说明](https://foruda.gitee.com/images/1666344606303191760/dfa9ab47_9051806.png "14.png") - pom.xml文件参考 ``` demo org.example 1.0-SNAPSHOT 4.0.0 demo-test com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config org.springframework spring-web org.springframework.boot spring-boot-starter-web org.projectlombok lombok ``` - 在java目录新建包com.demo.test及启动类 TestApplication.java ``` package com.example.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); System.out.println("测试启动成功"); } } ``` - 在resources目录下创建bootstrap.yml ``` # Tomcat server: port: 8001 # Spring spring: application: # 应用名称 name: demo-test profiles: # 环境配置 active: dev cloud: nacos: discovery: # 服务注册地址 server-addr: 127.0.0.1:8848 config: # 配置中心地址 server-addr: 127.0.0.1:8848 # 配置文件格式 file-extension: yml # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} ``` - 在nacos配置中心 http://127.0.0.1:8848/nacos/ 配置demo-test-dev.yml - 我这边是没有内容的,根据实际情况修改 ![输入图片说明](https://foruda.gitee.com/images/1666344637651564780/00ad1149_9051806.png "15.png") - 创建controller包及TestController.java测试类 - 代码参考 ``` package com.example.test.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/test2") public String Test2(){ System.out.println("Test2 ok"); return "Alive2"; } @GetMapping("/index") public String Test(){ System.out.println("Test ok"); return "Alive"; } @GetMapping("/card/{cardId}") public String cardTest(@PathVariable("cardId") String cardId){ System.out.println("Test ok" + cardId); return "CardId>>>" + cardId; } } ``` - 启动 ![输入图片说明](https://foruda.gitee.com/images/1666344656611537264/820ab18c_9051806.png "16.png") - 成功启动后在nacos 配置中心可看到对应的服务 ![输入图片说明](https://foruda.gitee.com/images/1666344669989841201/51b8d498_9051806.png "17.png") - 3)验证 - 不经过网关 - http://127.0.0.1:8001/test2 - 经过网关 - http://127.0.0.1:8000/test/test2 - 此链接test/**,对应是nacos配置中心demo-gateway-dev.yml配置的路由。实际http://127.0.0.1:8000/test 对应demo-test服务http://127.0.0.1:8001/ ,所以 http://127.0.0.1:8000//test/test2对应 http://127.0.0.1:8001/test2 ![输入图片说明](https://foruda.gitee.com/images/1666344701105886735/e6d6e4c3_9051806.png "19.png") - 另外2个验证链接 - http://127.0.0.1:8000/test/card/1234 - http://127.0.0.1:8000/test/index - 至此,完成。