环境准备
注册中心:nacos
jdk版本:jdk17
Spring Cloud Alibaba版本组合:
- Spring Boot 3.0.10
- Spring Cloud 2022.0.4
- Spring Cloud Alibaba 2022.0.0.0
项目结构介绍
|-- demo-framework
|-- demo-provider-service(服务提供方)
demo-framework:父级pom,负责进行依赖管理、
demo-provider-service:服务提供方,本案例中将用于集成注册中心
步骤一:确认nacos已启动
访问naco地址(http://127.0.0.1:8848/nacos)可以正常访问!
步骤二:创建demo-framework工程
该工程为pom类型,负责管理整个工程的依赖以及自定义属性,仅有pom文件。
pom.xml
<artifactId>demo-framework</artifactId>
<packaging>pom</packaging>
<modules>
<module>demo-provider-service</module>
</modules>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 目前最新版本 jdk要求17-->
<spring.cloud.alibaba.version>2022.0.0.0</spring.cloud.alibaba.version>
<spring.cloud.version>2022.0.4</spring.cloud.version>
<spring.boot.version>3.0.10</spring.boot.version>
<alibaba.fastjson2.version>2.0.39</alibaba.fastjson2.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring boot-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud alibaba-->
<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>
步骤三:创建demo-provider-service模块
web服务,引入注册中心。
- pom.xml中引入spring-cloud-starter-alibaba-nacos-discovery依赖
<!-- nacos服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- application.yml引入注册中心相关信息
spring:
application:
name: provider-service
cloud:
nacos:
discovery:
enabled: true
username: nacos
password: nacos
server-addr: 127.0.0.1:8848
- 应用启动类
ProviderServiceApplication.java
package demo.provider.service;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderServiceApplication.class,args);
}
}
运行ProviderServiceApplication即可启动应用。
结果验证
访问nacos,菜单-服务列表,可以看到provider-service有实例在线即服务注册成功。
拓展:省略注解@EnableDiscoveryClient
可以通过在application文件中配置spring.cloud.discovery.enabled=true来省略启动类上注解@EnableDiscoveryClient,以起到同样的效果。
拓展:自动装配原理
- 通过查看依赖spring-cloud-starter-alibaba-nacos-discovery中META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件内容可知相关自动装配类。
com.alibaba.cloud.nacos.discovery.NacosDiscoveryAutoConfiguration
com.alibaba.cloud.nacos.endpoint.NacosDiscoveryEndpointAutoConfiguration
com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration
com.alibaba.cloud.nacos.discovery.NacosDiscoveryClientConfiguration
com.alibaba.cloud.nacos.discovery.NacosDiscoveryHeartBeatConfiguration
com.alibaba.cloud.nacos.discovery.reactive.NacosReactiveDiscoveryClientConfiguration
com.alibaba.cloud.nacos.discovery.configclient.NacosConfigServerAutoConfiguration
com.alibaba.cloud.nacos.loadbalancer.LoadBalancerNacosAutoConfiguration
com.alibaba.cloud.nacos.NacosServiceAutoConfiguration
com.alibaba.cloud.nacos.util.UtilIPv6AutoConfiguration
本文暂时没有评论,来添加一个吧(●'◡'●)