当前位置:   article > 正文

SpringCloud入门【二】——注册中心和客户端搭建_spring-cloud-dependencies

spring-cloud-dependencies

一、以Eureka方式搭建

1、创建cloud-demo父工程

因为springcloud是基于springboot的,所以在创建父工程时选择spring模板

然后删除所有资源文件,如图所示只留下pom.xml文件

在pom中加入父依赖,表示整个项目都是以spring-boot-starter-parent为起始,此pom文件也将被所有子模块继承。由于我的springboot版本是2.16.13,所以<parent>里也标注版本是2.16.13。

  1. <parent>
  2. <artifactId>spring-boot-starter-parent</artifactId>
  3. <groupId>org.springframework.boot</groupId>
  4. <version>2.6.13</version>
  5. </parent>

标注打包方式为pom,子模块才能继承

<packaging>pom</packaging>

然后是配置依赖的版本管理

  1. <dependencyManagement>
  2. <dependencies>
  3. <!--springboot的版本配置-->
  4. <dependency>
  5. <groupId>org.springframework.boot</groupId>
  6. <artifactId>spring-boot-dependencies</artifactId>
  7. <version>${spring-boot.version}</version>
  8. <type>pom</type>
  9. <scope>import</scope>
  10. </dependency>
  11. <!--springcloud的版本配置-->
  12. <dependency>
  13. <groupId>org.springframework.cloud</groupId>
  14. <artifactId>spring-cloud-dependencies</artifactId>
  15. <version>${spring-cloud.version}</version>
  16. <type>pom</type>
  17. <scope>import</scope>
  18. </dependency>
  19. </dependencies>
  20. </dependencyManagement>

此处的spring-boot.version和spring-cloud.version定的是properties里的配置,对应的版本在我的博客CSDN 中有说明,也可以自行了解。

 然后就完成了,子模块只要继承父模块就可以直接引入依赖,因为版本已经在父模块了确定好了

再次梳理一下,父工程的pom里面只用配置<parent>、<packing>和<dependencyManagement>下的dependency、加这些就行了,其他的是项目自己生成的,尽量不要动。以下为我创建时的pom文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <parent>
  5. <artifactId>spring-boot-starter-parent</artifactId>
  6. <groupId>org.springframework.boot</groupId>
  7. <version>2.6.13</version>
  8. </parent>
  9. <modelVersion>4.0.0</modelVersion>
  10. <groupId>com.example</groupId>
  11. <artifactId>spring_demo</artifactId>
  12. <version>0.0.1-SNAPSHOT</version>
  13. <name>spring_demo</name>
  14. <description>spring_demo</description>
  15. <packaging>pom</packaging>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  19. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  20. <spring-boot.version>2.6.13</spring-boot.version>
  21. <spring-cloud.version>2021.0.5</spring-cloud.version>
  22. </properties>
  23. <dependencies>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter</artifactId>
  27. </dependency>
  28. <dependency>
  29. <groupId>org.springframework.boot</groupId>
  30. <artifactId>spring-boot-starter-test</artifactId>
  31. <scope>test</scope>
  32. </dependency>
  33. </dependencies>
  34. <dependencyManagement>
  35. <dependencies>
  36. <dependency>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-dependencies</artifactId>
  39. <version>${spring-boot.version}</version>
  40. <type>pom</type>
  41. <scope>import</scope>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.cloud</groupId>
  45. <artifactId>spring-cloud-dependencies</artifactId>
  46. <version>${spring-cloud.version}</version>
  47. <type>pom</type>
  48. <scope>import</scope>
  49. </dependency>
  50. </dependencies>
  51. </dependencyManagement>
  52. <build>
  53. <plugins>
  54. <plugin>
  55. <groupId>org.apache.maven.plugins</groupId>
  56. <artifactId>maven-compiler-plugin</artifactId>
  57. <version>3.8.1</version>
  58. <configuration>
  59. <source>1.8</source>
  60. <target>1.8</target>
  61. <encoding>UTF-8</encoding>
  62. </configuration>
  63. </plugin>
  64. <plugin>
  65. <groupId>org.springframework.boot</groupId>
  66. <artifactId>spring-boot-maven-plugin</artifactId>
  67. <version>${spring-boot.version}</version>
  68. <configuration>
  69. <mainClass>com.example.spring_demo.SpringDemoApplication</mainClass>
  70. <skip>true</skip>
  71. </configuration>
  72. <executions>
  73. <execution>
  74. <id>repackage</id>
  75. <goals>
  76. <goal>repackage</goal>
  77. </goals>
  78. </execution>
  79. </executions>
  80. </plugin>
  81. </plugins>
  82. </build>
  83. </project>

2、创建注册中心eureka-server

点击项目右键新建module

 子模块选择maven工程、parent选择父工程spring_demo,maven模板选择quickstart

 完成后在子模块eureka-server的pom文件中引入server依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
  4. </dependency>

将启动文件改名成EurekaServerApplication,加上@SpringBootApplication和@EnableEurekaServer注解

 配置yml文件

  1. server:
  2. port: 8001
  3. spring:
  4. application:
  5. name: eureka-server
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://127.0.0.1:8001/eureka

 然后就可以,eureka-server,启动!

但是报错了,错误信息是说yml文件报错,把编码格式修改成UTF-8就行了。访问localhost:8001即可出现一下Eureka的信息页面。

 服务虽然启动成功了,但是看启动的日志报告发现有一个异常

原因是Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,出现冲突,所以我们需要禁用它自己的客户端注册行为。修改yml为以下代码

  1. server:
  2. port: 8001
  3. spring:
  4. application:
  5. name: eureka-server
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://127.0.0.1:8001/eureka
  10. register-with-eureka: false #指定是否要注册到注册中心(注册中心不需要开启)
  11. fetch-registry: false #指定是否要从注册中心获取服务(注册中心不需要开启)

 3、创建服务提供者

以创建eureka-server的方式创建eureka-user,添加client依赖

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  4. </dependency>

新版本的springcloud还需引入web包,否则会启动失败

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

同样的修改启动类的名称,添加@SpringBootApplication和@EnableEurekaClient注解

 创建application.yml文件和eureka-server一样

  1. server:
  2. port: 8081
  3. spring:
  4. application:
  5. name: eureka-use
  6. eureka:
  7. client:
  8. service-url:
  9. defaultZone: http://127.0.0.1:8001/eureka

服务启动成功 

 可以在运行环境配置界面复制一个服务,更改端口后运行

新的服务在注册中心完成注册 

二、以Nacos方式创建

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富。

1、启动nacos 

Eureka是以服务的形式在微服务中展现的,而nacos是以程序的形式,所以需要安装,github主页:https://github.com/alibaba/nacos 下载好之后在bin目录以以下命令启动,standalone表示是以单例模式启动。

startup.cmd -m standalone

如图所示启动成功

复制网址直接到浏览器打开,如下显示启动成功。

, 

 2、引入依赖

在父工程引入spring-cloud-alibaba-dependencies,添加代码如下,这里要注意引入的版本要与自己的springboot版本匹配点击查看更多的版本

  1. <properties>
  2. <spring-cloud.alibaba.version>2021.0.1.0</spring-cloud.alibaba.version>
  3. </properties>
  4. <dependencyManagement>
  5. <dependencies>
  6. <dependency>
  7. <groupId>com.alibaba.cloud</groupId>
  8. <artifactId>spring-cloud-alibaba-dependencies</artifactId>
  9. <version>${spring-cloud.alibaba.version}</version>
  10. <type>pom</type>
  11. <scope>import</scope>
  12. </dependency>
  13. </dependencies>
  14. </dependencyManagement>

因为nacos代替了eureka,所以之前写的eureka-server不用管了,直接在eureka-user中引入依赖

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. </dependency>

然后注释掉eureka的依赖,不然会报发现两个注册中心的错 

3、修改配置

删除启动类里面的@EnableEurekaClient注解,修改yml文件如下所示

  1. server:
  2. port: 8081
  3. spring:
  4. application:
  5. name: eureka-use
  6. cloud:
  7. nacos:
  8. server-addr: localhost:8848
  9. #eureka:
  10. # client:
  11. # service-url:
  12. # defaultZone: http://127.0.0.1:8001/eureka

然后启动服务,到nacos的页面查看,如图所示服务注册成功

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/178253
推荐阅读
相关标签
  

闽ICP备14008679号