使用 Spring Boot 和 Dubbo 进行集成

发布时间 2023-07-07 20:59:46作者: dersdysbiokecu

1. 创建一个 Spring Boot 项目,可以使用 Spring Initializr(https://start.spring.io/)生成一个初始的项目结构。
2. 在 pom.xml 中添加 Dubbo 和相关依赖:

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.12</version>
</dependency>

3. 创建一个 Dubbo 服务提供者的接口和实现类:

// 服务接口
public interface HelloService {
    String sayHello(String name);
}

// 服务实现类
@Service
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

4. 在 application.properties 或 application.yml 中配置 Dubbo:

# Dubbo 应用名称
dubbo.application.name=your-application-name
# Dubbo 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
# Dubbo 服务提供者暴露的端口
dubbo.protocol.port=20880

5. 创建一个 Dubbo 服务消费者的接口和实现类:

@RestController
public class HelloController {
    @Reference
    private HelloService helloService;

    @GetMapping("/hello")
    public String sayHello(@RequestParam String name) {
        return helloService.sayHello(name);
    }
}

6. 运行 Spring Boot 应用,Dubbo 将会自动启动并将服务注册到注册中心。

7. 创建一个 Dubbo 服务消费者的启动类:

@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

8. 在 application.properties 或 application.yml 中配置 Dubbo 消费者:

# Dubbo 应用名称
dubbo.application.name=your-consumer-application-name
# Dubbo 注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

9. 编写一个 RestController 来调用 Dubbo 服务:

@RestController
public class HelloController {
    @Reference
    private HelloService helloService;

    @GetMapping("/hello")
    public String sayHello(@RequestParam String name) {
        return helloService.sayHello(name);
    }
}

10. 运行 Dubbo 服务提供者和 Dubbo 服务消费者的应用。
11. 访问 http://localhost:8080/hello?name=World ,应该能够看到返回的结果 "Hello, World"。
以上是使用 Spring Boot 和 Dubbo 进行集成的完整示例。通过在消费者应用中使用 @Reference 注解引用服务,即可实现对 Dubbo 服务的调用。同时,确保提供者和消费者的配置中都有正确的注册中心地址,以便进行服务的注册和发现。

基于 GPT 生成。