博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot整合Dubbo案例
阅读量:5749 次
发布时间:2019-06-18

本文共 6141 字,大约阅读时间需要 20 分钟。

使用框架:

  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;@Entitypublic 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开源项目;

参考文档:

本工程采用该项目的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.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=truespring.datasource.username=rootspring.datasource.password=rootspring.jpa.properties.hibernate.hbm2ddl.auto=createspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialectspring.jpa.properties.hibernate.format_sql=truespring.jpa.show-sql=true# 访问端口server.port=8080# dubbo配置dubbo.application.name=springboot-dubbo-providerdubbo.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@EnableDubbopublic 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.Driverspring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=truespring.datasource.username=rootspring.datasource.password=root# WEB\u670D\u52A1\u7AEF\u53E3server.port=8081# dubbo\u914D\u7F6Edubbo.application.name=springboot-dubbo-consumerdubbo.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;@RestControllerpublic 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@EnableDubbopublic class SpringBootDemoDubboConsumerApplication {    public static void main(String[] args) {        SpringApplication.run(SpringBootDemoDubboConsumerApplication.class, args);    }}复制代码

6、启动main方法。

7、调用远程接口:

一个SpringBoot基于Dubbo的服务接口开发完成。

转载于:https://juejin.im/post/5cfb27e4e51d4510664d16a0

你可能感兴趣的文章
Failed to connect to remote VM. Connection refused. Connection refused: connect
查看>>
freeze
查看>>
SAP HANA存储过程结果视图调用
查看>>
设计模式 ( 十八 ):State状态模式 -- 行为型
查看>>
OracleLinux安装说明
查看>>
nova分析(7)—— nova-scheduler
查看>>
Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)
查看>>
OpenMediaVault 搭建git,ssh无法连接问题
查看>>
java多线程之:Java中的ReentrantLock和synchronized两种锁定机制的对比 (转载)
查看>>
【Web动画】SVG 实现复杂线条动画
查看>>
使用Wireshark捕捉USB通信数据
查看>>
Apache Storm 官方文档 —— FAQ
查看>>
iOS 高性能异构滚动视图构建方案 —— LazyScrollView
查看>>
Java 重载、重写、构造函数详解
查看>>
【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
查看>>
【云栖大会】探索商业升级之路
查看>>
HybridDB实例新购指南
查看>>
C语言及程序设计提高例程-35 使用指针操作二维数组
查看>>
华大基因BGI Online的云计算实践
查看>>
排序高级之交换排序_冒泡排序
查看>>