环境:
JDK:21
1.项目结构

这里hxl03是服务提供者,hxl04是服务消费者
################################################hxl03服务提供者################################
1.pom.xml文件
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.hxl03</groupId><artifactId>hxl03</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>hxl03</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.0</version></parent><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.2.0</version></dependency><!-- web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>RELEASE</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
2.application.yml
server:port: 8003
spring:application:name: demo-provider
dubbo:application:name: demo-providerregistry:##address: nacos://192.168.1.134:8848?username=nacos&password=nacosaddress: nacos://192.168.1.134:8848
username: nacospassword: nacos##register-mode: instanceprotocol:name: dubboport: -1scan:base-packages: org.hxl03.provider##metadata-type: remote
3.java代码

DemoService.java
package org.hxl03.api;public interface DemoService {String sayHello(String name);
}
DemoServiceImpl.java
package org.hxl03.provider;import org.hxl03.api.DemoService;
import org.apache.dubbo.config.annotation.DubboService;@DubboService // 关键注解:声明这是一个Dubbo服务实现,并将此服务发布到注册中心
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello, " + name + "! (from Dubbo 3 Provider)";}
}
App.java
package org.hxl03;/*** Hello world!**/
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App
{public static void main( String[] args ){SpringApplication.run(App.class,args);}
}
##########################################hxl04服务消费者###############################
1.pom.xml文件
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.hxl04</groupId><artifactId>hxl04</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>hxl04</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.0</version></parent><dependencies><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.2.0</version></dependency><!-- web依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId><version>3.2.0</version></dependency> <dependency><groupId>org.hxl03</groupId><artifactId>hxl03</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
</project>
红色部分是引入hxl03的项目
2.application.yml
server:port: 8004
spring:application:name: demo-consumer
dubbo:application:name: demo-consumerregistry:##address: nacos://192.168.1.134:8848?username=nacos&password=nacosaddress: nacos://192.168.1.134:8848
username: nacospassword: nacosprotocol:name: dubboport: -1##register-mode: instance##metadata-type: remote
3.java代码

ConsumerController.java
package org.hxl04.consumer;import org.hxl03.api.DemoService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ConsumerController {// 关键注解:引用远程Dubbo服务// 注意:Dubbo 3.x 应用级服务发现通常不需要指定版本(version)
@DubboReferenceprivate DemoService demoService;@GetMapping("/hello")public String sayHello(@RequestParam String name) {// 这个调用看起来是本地方法,但实际上是通过Dubbo发起的远程过程调用return demoService.sayHello(name);}
}
App.java
package org.hxl04;/*** Hello world!**/
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App
{public static void main( String[] args ){SpringApplication.run(App.class,args);}
}
hxl03提供服务端启动后会发现注册到了nacos

hxl04消费者端启动后调用
http://127.0.0.1:8004/hello?name=World
