springboot:集成dubbo分布式框架


  • 接口工程
  • 服务提供者工程
  • 服务消费者工程

1、创建一个maven java工程,作为接口工程

接口工程中主要用于存放所有的实体bean和业务接口
集成dubbo框架中的实体类必须全部实现Serializable序列化接口



    org.projectlombok
    lombok
    1.18.22
    provided

2、创建一个springboot web工程,作为服务提供者provider

这个工程中主要用来实现所有的业务接口,并且将需要暴露的业务接口注册到注册中心

2.1 引入依赖

provider工程中,除了springboot自动引入的web依赖,还需要额外引入dubbo依赖、注册中心的依赖、接口工程的依赖



    org.springframework.boot
    spring-boot-starter-web



    com.alibaba.spring.boot
    dubbo-spring-boot-starter
    2.0.0



    com.101tec
    zkclient
    0.10



    com.kw
    001-springboot-dubbo-interface
    1.0.0

2.2 配置dubbo服务提供者

在springboot项目中,dubbo的配置在springboot核心配置文件application.properties中进行配置

#配置项目tomcat端口号
server.port=8081
#配置项目的上下文路径
server.servlet.context-path=/

#配置dubbo服务提供者核心配置
#声明dubbo服务提供者的名称:保证唯一性
spring.application.name=001-springboot-dubbo-provider
#声明这个工程是dubbo的服务提供者
spring.dubbo.server=true
#设置注册中心的地址和端口
spring.dubbo.registry=zookeeper://localhost:2181

2.3 编写接口实现类

在springboot项目中,编写完接口实现类之后,需要在实现类上添加@Component注解,表示将实现类加入到spring容器中。
这个注解就相当于maven web项目中,在dubbo服务提供者核心配置文件中配置的

然后通过配置将接口注册到注册中心进行暴露
@Service(interfaceClass = UserService.class,version = "1.0.0",timeout = 15000)
这个配置就相当于maven web项目中,在dubbo服务提供者核心配置文件中配置的
dubbo:service interface="",version="",timeout=""

@Component
@Service(interfaceClass = UserService.class,version = "1.0.0",timeout = 15000)
//dubbo:service interface="",version="",timeout=""
public class UserServiceImpl implements UserService {
    //正常业务是在业务层需要引入持久层获取数据

    @Override
    public User getUserById(int id) {
        User user=new User();
        user.setId(1);
        user.setUsername("admin");
        user.setPassword("123");
        return user;
    }

    @Override
    public int CountUsers() {
        return 200;
    }
}

2.4 开启dubbo注解配置

在springboot启动配置类上添加@EnableDubboConfiguration注解,表示开启了dubbo注解配置

@SpringBootApplication  //开启spring注解配置
@EnableDubboConfiguration //开启dubbo注解配置
public class Application {

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

}

3、创建一个springboot web工程,作为服务消费者consumer

这个工程中主要用来处理前端业务请求

3.1 引入依赖



    org.springframework.boot
    spring-boot-starter-web



    com.alibaba.spring.boot
    dubbo-spring-boot-starter
    2.0.0



    com.101tec
    zkclient
    0.10



    com.kw
    001-springboot-dubbo-interface
    1.0.0

3.2 配置dubbo服务消费者

在springboot项目中,dubbo的配置在springboot核心配置文件application.properties中进行配置

#设置项目默认端口
server.port=8082
#设置上下文路径
server.servlet.context-path=/

#配置dubbo
#设置dubbo服务消费者名称:保证唯一性
spring.application.name=002-springboot-dubbo-consumer
#设置注册中心的地址和端口号
spring.dubbo.registry=zookeeper://localhost:2181

3.3 编写controller层代码

在控制层需要引入注册中心暴露的接口,在引入的接口上添加以下配置
@Reference(interfaceClass = UserService.class,version = "1.0.0",check = false)

@RestController
public class UserController {

    @Reference(interfaceClass = UserService.class,version = "1.0.0",check = false)
    UserService userService;

    @RequestMapping("/user")
    public User getUserById(int id){
        User user=userService.getUserById(id);
        return user;
    }

    @GetMapping("/userCount")
    public String countUsers(){
        return "当前总人数为:"+userService.CountUsers();
    }
}

3.4 开启dubbo注解扫描

在springboot启动配置类上添加@EnableDubboConfiguration注解,表示开启了dubbo注解配置

@SpringBootApplication  //开启spring注解配置
@EnableDubboConfiguration //开启dubbo注解配置
public class Application {

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

}

4、启动注册中心