• SpringCloud实战项目一(项目环境的搭建001)


    1.项目目录结构

    2.创建项目名称为springcloud-001

    pom.xml配置

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <parent>
    6. <groupId>org.springframework.bootgroupId>
    7. <artifactId>spring-boot-starter-parentartifactId>
    8. <version>2.3.2.RELEASEversion>
    9. parent>
    10. <groupId>com.xiaogroupId>
    11. <artifactId>springcloud-001artifactId>
    12. <version>1.0version>
    13. <packaging>pompackaging>
    14. <properties>
    15. <java.version>1.8java.version>
    16. <spring-boot-version>2.3.2.RELEASEspring-boot-version>
    17. <spring-cloud-version>2.2.6.RELEASEspring-cloud-version>
    18. <spring-cloud-dependencies>2.2.6.RELEASEspring-cloud-dependencies>
    19. <spring-cloud-nacos-version>2.2.6.RELEASEspring-cloud-nacos-version>
    20. <spring-cloud-openfeign-version>2.2.6.RELEASEspring-cloud-openfeign-version>
    21. <spring-cloud-gateway-version>2.2.6.RELEASEspring-cloud-gateway-version>
    22. <ali-csp-version>1.8.1ali-csp-version>
    23. properties>
    24. <modules>
    25. <module>springcloud-providermodule>
    26. <module>springcloud-consumermodule>
    27. <module>springcloud-gatewaymodule>
    28. <module>springcloud-apimodule>
    29. modules>
    30. <dependencies>
    31. <dependency>
    32. <groupId>com.alibaba.cloudgroupId>
    33. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    34. dependency>
    35. <dependency>
    36. <groupId>org.projectlombokgroupId>
    37. <artifactId>lombokartifactId>
    38. <version>1.18.20version>
    39. <scope>providedscope>
    40. dependency>
    41. dependencies>
    42. <dependencyManagement>
    43. <dependencies>
    44. <dependency>
    45. <groupId>com.alibaba.cloudgroupId>
    46. <artifactId>spring-cloud-alibaba-dependenciesartifactId>
    47. <version>${spring-cloud-dependencies}version>
    48. <type>pomtype>
    49. <scope>importscope>
    50. dependency>
    51. <dependency>
    52. <groupId>com.alibaba.cloudgroupId>
    53. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    54. <version>${spring-cloud-nacos-version}version>
    55. dependency>
    56. <dependency>
    57. <groupId>org.springframework.cloudgroupId>
    58. <artifactId>spring-cloud-starter-openfeignartifactId>
    59. <version>${spring-cloud-openfeign-version}version>
    60. dependency>
    61. <dependency>
    62. <groupId>org.springframework.cloudgroupId>
    63. <artifactId>spring-cloud-starter-gatewayartifactId>
    64. <version>${spring-cloud-gateway-version}version>
    65. dependency>
    66. <dependency>
    67. <groupId>com.alibaba.cspgroupId>
    68. <artifactId>sentinel-coreartifactId>
    69. <version>${ali-csp-version}version>
    70. dependency>
    71. <dependency>
    72. <groupId>com.alibaba.cspgroupId>
    73. <artifactId>sentinel-transport-simple-httpartifactId>
    74. <version>${ali-csp-version}version>
    75. dependency>
    76. dependencies>
    77. dependencyManagement>
    78. <build>
    79. <plugins>
    80. <plugin>
    81. <groupId>org.springframework.bootgroupId>
    82. <artifactId>spring-boot-maven-pluginartifactId>
    83. <configuration>
    84. <skip>trueskip>
    85. configuration>
    86. <executions>
    87. <execution>
    88. <goals>
    89. <goal>repackagegoal>
    90. goals>
    91. execution>
    92. executions>
    93. plugin>
    94. plugins>
    95. build>
    96. project>

     3.创建网关项目,springcloud-gateway

    pom.xml

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <parent>
    5. <groupId>com.xiaogroupId>
    6. <artifactId>springcloud-001artifactId>
    7. <version>1.0version>
    8. <relativePath>../pom.xmlrelativePath>
    9. parent>
    10. <groupId>com.xiaogroupId>
    11. <artifactId>springcloud-gatewayartifactId>
    12. <version>1.0version>
    13. <dependencies>
    14. <dependency>
    15. <groupId>org.springframework.cloudgroupId>
    16. <artifactId>spring-cloud-starter-gatewayartifactId>
    17. dependency>
    18. dependencies>
    19. project>

    application.yml

    1. server:
    2. port: 9001
    3. spring:
    4. application:
    5. name: springcloud-gateway
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 192.168.64.19:8848
    10. gateway:
    11. routes:
    12. - id: springcloud-consumer
    13. uri: lb://springcloud-consumer
    14. predicates:
    15. - Path=/consumer/*

    4.创建提供项目,springcloud-provider

    pom.xml

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <parent>
    5. <groupId>com.xiaogroupId>
    6. <artifactId>springcloud-001artifactId>
    7. <version>1.0version>
    8. <relativePath>../pom.xmlrelativePath>
    9. parent>
    10. <groupId>com.xiaogroupId>
    11. <artifactId>springcloud-providerartifactId>
    12. <version>1.0version>
    13. <dependencies>
    14. <dependency>
    15. <groupId>org.springframework.bootgroupId>
    16. <artifactId>spring-boot-starter-webartifactId>
    17. dependency>
    18. dependencies>
    19. project>

    application.yml

    1. server:
    2. port: 9002
    3. spring:
    4. application:
    5. name: springcloud-provider
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 192.168.64.19:8848
    MusicController.java
    1. package com.xiao.provider.controller;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. import org.springframework.web.bind.annotation.RequestParam;
    5. import org.springframework.web.bind.annotation.RestController;
    6. @RestController
    7. @Slf4j
    8. public class MusicController {
    9. @RequestMapping("/provider/musicplay")
    10. public String musicPlay(@RequestParam String musicPath){
    11. log.info("播放音乐文件[{}]", musicPath);
    12. return musicPath;
    13. }
    14. }

    5.创建api工程,springcloud-api

    pom.xml

    1. <project xmlns="http://maven.apache.org/POM/4.0.0"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <parent>
    5. <artifactId>springcloud-001artifactId>
    6. <groupId>com.xiaogroupId>
    7. <version>1.0version>
    8. parent>
    9. <modelVersion>4.0.0modelVersion>
    10. <groupId>com.xiaogroupId>
    11. <artifactId>springcloud-apiartifactId>
    12. <dependencies>
    13. <dependency>
    14. <groupId>org.springframework.cloudgroupId>
    15. <artifactId>spring-cloud-starter-openfeignartifactId>
    16. dependency>
    17. dependencies>
    18. project>
    MusicClientFallbackFactory.java
    1. package com.xiao.api.feign.factory;
    2. import com.xiao.api.feign.MusicServiceClient;
    3. import feign.hystrix.FallbackFactory;
    4. import lombok.extern.slf4j.Slf4j;
    5. import org.springframework.stereotype.Component;
    6. /**
    7. * 音乐服务降级处理
    8. *
    9. * @author xiaoss
    10. * @since 1.0, 2022年07月27日 14:05:40
    11. */
    12. @Slf4j
    13. @Component
    14. public class MusicClientFallbackFactory implements FallbackFactory<MusicServiceClient> {
    15. @Override
    16. public MusicServiceClient create(Throwable e) {
    17. log.error("音乐服务接口异常,原因:{}", e.getMessage(), e);
    18. return new MusicServiceClient() {
    19. @Override
    20. public String musicPlay(String musicPath) {
    21. return "musicService服务器正在维护,请稍后再试!";
    22. }
    23. };
    24. }
    25. }
    MusicServiceClient.java
    1. package com.xiao.api.feign;
    2. import com.xiao.api.constant.CloudServiceDefinitions;
    3. import com.xiao.api.feign.factory.MusicClientFallbackFactory;
    4. import org.springframework.cloud.openfeign.FeignClient;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestParam;
    8. /**
    9. * 音乐服务接口客户端
    10. *
    11. * @author xiaoss
    12. * @since 1.0, 2022年07月27日 14:08:01
    13. */
    14. @FeignClient(contextId = "musicClient",name= CloudServiceDefinitions.PROVIDER_SERVICE,
    15. fallbackFactory = MusicClientFallbackFactory.class)
    16. public interface MusicServiceClient {
    17. @GetMapping("/provider/musicplay")
    18. String musicPlay(@RequestParam String musicPath);
    19. }

    6.创建服务消费工程,springcloud-consumer

    pom.xml

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <parent>
    5. <groupId>com.xiaogroupId>
    6. <artifactId>springcloud-001artifactId>
    7. <version>1.0version>
    8. <relativePath>../pom.xmlrelativePath>
    9. parent>
    10. <groupId>com.xiaogroupId>
    11. <artifactId>springcloud-consumerartifactId>
    12. <version>1.0version>
    13. <dependencies>
    14. <dependency>
    15. <groupId>org.springframework.bootgroupId>
    16. <artifactId>spring-boot-starter-webartifactId>
    17. dependency>
    18. <dependency>
    19. <groupId>com.alibaba.cloudgroupId>
    20. <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
    21. dependency>
    22. <dependency>
    23. <groupId>com.alibaba.cspgroupId>
    24. <artifactId>sentinel-coreartifactId>
    25. dependency>
    26. <dependency>
    27. <groupId>com.alibaba.cspgroupId>
    28. <artifactId>sentinel-transport-simple-httpartifactId>
    29. dependency>
    30. <dependency>
    31. <groupId>com.alibaba.cspgroupId>
    32. <artifactId>sentinel-web-servletartifactId>
    33. dependency>
    34. <dependency>
    35. <groupId>com.xiaogroupId>
    36. <artifactId>springcloud-apiartifactId>
    37. <version>1.0version>
    38. <scope>compilescope>
    39. dependency>
    40. dependencies>
    41. project>

    application.yml

    1. server:
    2. port: 9003
    3. spring:
    4. application:
    5. name: springcloud-consumer
    6. cloud:
    7. nacos:
    8. discovery:
    9. server-addr: 192.168.64.19:8848
    10. sentinel:
    11. transport:
    12. port: 8719
    13. dashboard: 192.168.233.130:9090
    14. main:
    15. allow-bean-definition-overriding: true
    16. feign:
    17. sentinel:
    18. enabled: true
    PlayerController.java
    1. package com.xiao.consumer.controller;
    2. import com.xiao.api.feign.MusicServiceClient;
    3. import com.xiao.api.feign.VideoServiceClient;
    4. import lombok.extern.slf4j.Slf4j;
    5. import org.springframework.web.bind.annotation.GetMapping;
    6. import org.springframework.web.bind.annotation.RequestMapping;
    7. import org.springframework.web.bind.annotation.RequestParam;
    8. import org.springframework.web.bind.annotation.RestController;
    9. import javax.annotation.Resource;
    10. @RestController
    11. @Slf4j
    12. public class PlayerController {
    13. @Resource
    14. private MusicServiceClient musicServiceClient;
    15. @Resource
    16. private VideoServiceClient videoServiceClient;
    17. @RequestMapping("/consumer/musicplay")
    18. public String musicplay(@RequestParam String musicPath){
    19. log.info("musicplay 调用!");
    20. return musicServiceClient.musicPlay(musicPath);
    21. }
    22. @RequestMapping("/consumer/videoplay")
    23. public String videoplay(@RequestParam String videoPath){
    24. log.info("videoplay 调用!");
    25. return videoServiceClient.videoPlay(videoPath);
    26. }
    27. @GetMapping("hello")
    28. public String hello(){
    29. return "hello";
    30. }
    31. }

    7.测试

    分别启动服务gateway、provider、consumer

    使用postMan测试接口:

    http://localhost:9001/consumer/musicplay?musicPath=1

    源码下载地址:

    链接:https://pan.baidu.com/s/1717J8lOKNRqq-S7aTYOw_g 
    提取码:ez84

  • 相关阅读:
    07-树(Tree)结构分析
    突破编程_C++_面试(模板编程(3))
    自己动手写数据库:实现一个小型 SQL 解释器(下)
    怎么把电脑图片转文字?只需这几步就可以截图转文字
    react基础知识点1
    7.JSP
    怎么导入别人的android项目
    HttpClient学习(Java)
    Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
    (附源码)ssm医疗管理系统 毕业设计 260952
  • 原文地址:https://blog.csdn.net/xiao297328/article/details/126039973