SpringBoot整合Dubbo案例-创新互联-成都快上网建站

SpringBoot整合Dubbo案例-创新互联

使用框架:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、朝天网站维护、网站推广。
  1. jdk 1.8

  2. springboot-2.1.3

  3. dubbo-2.6

  4. spring-data-jpa-2.1.5

一、开发dubbo服务接口:

按照Dubbo官方开发建议,创建一个接口项目,该项目只定义接口和model类;

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

坐标:

com.example
spring-boot-demo-dubbo-interface
0.0.1-SNAPSHOT

添加spring-data-jpa 依赖:


org.springframework.boot
spring-boot-starter-data-jpa

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包进行继承:


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

二、开发dubbo服务提供者:

1、创建一个Springboot项目spring-boot-demo-dubbo-provider并配置好相关的依赖;

pom.xml


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

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

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

        
        
            com.101tec
            zkclient
            0.10
        

        
        
            org.springframework.boot
            spring-boot-starter-data-jpa
        

        
            mysql
            mysql-connector-java
            runtime
        

        
        
            com.example
            spring-boot-demo-dubbo-interface
            0.0.1-SNAPSHOT
        
    

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的服务接口开发完成。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


文章标题:SpringBoot整合Dubbo案例-创新互联
网页网址:http://kswjz.com/article/ddesis.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流