springboot整合dubbo的簡單案例


使用框架:

  jdk 1.8

  springboot-2.1.3 

  dubbo-2.6

  spring-data-jpa-2.1.5

一、開發dubbo服務接口:

按照Dubbo官方開發建議,創建一個接口項目,該項目只定義接口和model類;

1、創建springboot工程 spring-boot-demo-dubbo-interface

坐標:

<groupId>com.example</groupId>
<artifactId>spring-boot-demo-dubbo-interface</artifactId>
<version>0.0.1-SNAPSHOT</version>

添加spring-data-jpa 依賴:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2、創建model

package com.example.demo.model;

@Entity
public class User implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue private long id; private String userName; private String password; private int age; public long getId() { return id; } //省略set get 方法

3、創建接口:

package com.example.demo.service;

import com.example.demo.model.User;

public interface UserService {
    
    public void save(User user);
    
    public String sayHello(String word);
}

4、使用命令  clean install   打包安裝到maven倉庫。

 

 

阿里巴巴提供的dubbo集成springboot開源項目;

參考文檔:

https://github.com/apache/dubbo-spring-boot-project/blob/0.2.x/README_CN.md

本工程采用該項目的jar包進行繼承:

<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>

 

二、開發dubbo服務提供者:

1、創建一個Springboot項目spring-boot-demo-dubbo-provider並配置好相關的依賴;

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        
        <!-- 加入springboot與dubbo集成的起步依賴 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

        <!-- 由於使用了zookeeper作為注冊中心,則需要加入zookeeper的客戶端jar包: -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        
        <!-- spring-data-jpa -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        
        <!-- 添加接口服務 -->
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>spring-boot-demo-dubbo-interface</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

2、在Springboot的核心配置文件application.properties中配置dubbo的信息:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

# 訪問端口
server.port=8080
# dubbo配置
dubbo.application.name=springboot-dubbo-provider
dubbo.registry.address=zookeeper://192.168.146.128:2181

3、開發編寫Dubbo的接口實現類:

package com.example.demo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;

@Component //注冊為spring bean
@Service // 這注解是dubbo提供的 
public class UserServiceImpl implements UserService {
    
    @Autowired
    private UserRepository userRepository;

    @Override
    public void save(User user) {
        userRepository.save(user);
    }

    @Override
    public String sayHello(String word) {
        return word;
    }
}

4、入口main程序啟動Dubbo服務提供者:添加注解 @EnableDubbo

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

@SpringBootApplication
@EnableDubbo
public class SpringBootDemoDubboProviderApplication {

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

}

 啟動main ,服務發布到zookeeper 注冊中心。

 

三、開發dubbo服務消費者:

1、創建一個Springboot項目spring-boot-demo-dubbo-consumer並配置好相關的依賴;

2、加入springboot與dubbo集成的起步依賴:(pom.xml 配置同上)

 注意: 服務提供者 和 消費者都要配置 服務接口依賴 

3、在Springboot的核心配置文件application.properties中配置dubbo的信息:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

# WEB\u670D\u52A1\u7AEF\u53E3
server.port=8081
# dubbo\u914D\u7F6E
dubbo.application.name=springboot-dubbo-consumer
dubbo.registry.address=zookeeper://192.168.146.128:2181 

 

4、編寫一個Controller類,調用遠程的Dubbo服務:

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.demo.model.User;
import com.example.demo.service.UserService;

@RestController
public class UserController {
    
    @Reference //該注解是dubbo提供的
    private UserService userService;
    
    @RequestMapping("/say")
    public String sayHello(String name) {
        return userService.sayHello(name);
    }
    
    @RequestMapping("/save")
    public void save() {
        User u = new User();
        u.setAge(20);
        u.setPassword("123");
        u.setUserName("zheng");
        userService.save(u);
    }
}

 

 

5、啟動類添加 開啟dubbo 注解 @EnableDubbo

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;

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

 

  6、啟動main方法。

  7、調用遠程接口:

http://localhost:8081/say?name=hello

一個簡單的springboot基於dubbo的服務接口開發完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM