赞
踩
因为springcloud是基于springboot的,所以在创建父工程时选择spring模板
然后删除所有资源文件,如图所示只留下pom.xml文件
在pom中加入父依赖,表示整个项目都是以spring-boot-starter-parent为起始,此pom文件也将被所有子模块继承。由于我的springboot版本是2.16.13,所以<parent>里也标注版本是2.16.13。
- <parent>
- <artifactId>spring-boot-starter-parent</artifactId>
- <groupId>org.springframework.boot</groupId>
- <version>2.6.13</version>
- </parent>
标注打包方式为pom,子模块才能继承
<packaging>pom</packaging>
然后是配置依赖的版本管理
- <dependencyManagement>
- <dependencies>
- <!--springboot的版本配置-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring-boot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <!--springcloud的版本配置-->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
此处的spring-boot.version和spring-cloud.version定的是properties里的配置,对应的版本在我的博客CSDN 中有说明,也可以自行了解。
然后就完成了,子模块只要继承父模块就可以直接引入依赖,因为版本已经在父模块了确定好了
再次梳理一下,父工程的pom里面只用配置<parent>、<packing>和<dependencyManagement>下的dependency、加这些就行了,其他的是项目自己生成的,尽量不要动。以下为我创建时的pom文件
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-
- <parent>
- <artifactId>spring-boot-starter-parent</artifactId>
- <groupId>org.springframework.boot</groupId>
- <version>2.6.13</version>
- </parent>
-
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.example</groupId>
- <artifactId>spring_demo</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>spring_demo</name>
- <description>spring_demo</description>
- <packaging>pom</packaging>
- <properties>
- <java.version>1.8</java.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <spring-boot.version>2.6.13</spring-boot.version>
- <spring-cloud.version>2021.0.5</spring-cloud.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${spring-boot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.8.1</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- <version>${spring-boot.version}</version>
- <configuration>
- <mainClass>com.example.spring_demo.SpringDemoApplication</mainClass>
- <skip>true</skip>
- </configuration>
- <executions>
- <execution>
- <id>repackage</id>
- <goals>
- <goal>repackage</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- </project>
点击项目右键新建module
子模块选择maven工程、parent选择父工程spring_demo,maven模板选择quickstart
完成后在子模块eureka-server的pom文件中引入server依赖
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
将启动文件改名成EurekaServerApplication,加上@SpringBootApplication和@EnableEurekaServer注解
配置yml文件
- server:
- port: 8001
- spring:
- application:
- name: eureka-server
- eureka:
- client:
- service-url:
- defaultZone: http://127.0.0.1:8001/eureka
然后就可以,eureka-server,启动!
但是报错了,错误信息是说yml文件报错,把编码格式修改成UTF-8就行了。访问localhost:8001即可出现一下Eureka的信息页面。
服务虽然启动成功了,但是看启动的日志报告发现有一个异常
原因是Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,出现冲突,所以我们需要禁用它自己的客户端注册行为。修改yml为以下代码
- server:
- port: 8001
- spring:
- application:
- name: eureka-server
- eureka:
- client:
- service-url:
- defaultZone: http://127.0.0.1:8001/eureka
- register-with-eureka: false #指定是否要注册到注册中心(注册中心不需要开启)
- fetch-registry: false #指定是否要从注册中心获取服务(注册中心不需要开启)
以创建eureka-server的方式创建eureka-user,添加client依赖
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
新版本的springcloud还需引入web包,否则会启动失败
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
同样的修改启动类的名称,添加@SpringBootApplication和@EnableEurekaClient注解
创建application.yml文件和eureka-server一样
- server:
- port: 8081
- spring:
- application:
- name: eureka-use
- eureka:
- client:
- service-url:
- defaultZone: http://127.0.0.1:8001/eureka
服务启动成功
可以在运行环境配置界面复制一个服务,更改端口后运行
新的服务在注册中心完成注册
Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富。
Eureka是以服务的形式在微服务中展现的,而nacos是以程序的形式,所以需要安装,github主页:https://github.com/alibaba/nacos 下载好之后在bin目录以以下命令启动,standalone表示是以单例模式启动。
startup.cmd -m standalone
如图所示启动成功
复制网址直接到浏览器打开,如下显示启动成功。
,
在父工程引入spring-cloud-alibaba-dependencies,添加代码如下,这里要注意引入的版本要与自己的springboot版本匹配点击查看更多的版本
- <properties>
- <spring-cloud.alibaba.version>2021.0.1.0</spring-cloud.alibaba.version>
- </properties>
-
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-alibaba-dependencies</artifactId>
- <version>${spring-cloud.alibaba.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
因为nacos代替了eureka,所以之前写的eureka-server不用管了,直接在eureka-user中引入依赖
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- </dependency>
然后注释掉eureka的依赖,不然会报发现两个注册中心的错
删除启动类里面的@EnableEurekaClient注解,修改yml文件如下所示
- server:
- port: 8081
- spring:
- application:
- name: eureka-use
- cloud:
- nacos:
- server-addr: localhost:8848
- #eureka:
- # client:
- # service-url:
- # defaultZone: http://127.0.0.1:8001/eureka
然后启动服务,到nacos的页面查看,如图所示服务注册成功
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。