springboot整合dubbo的简单案例

摘要:
spring boot演示dubbo界面</版本>弹簧引导起动器数据jpa<packagecom.example.demo.service;pom.xml<弹簧靴起动器腹板<org.springframework.boot<

使用框架:

  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

# WEBu670Du52A1u7AEFu53E3
server.port=8081
# dubbou914Du7F6E
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的服务接口开发完成。

免责声明:文章转载自《springboot整合dubbo的简单案例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇arcgis javascript api学习6(转)POI中设置Excel单元格格式样式(居中,字体,边框,背景色、列宽、合并单元格等)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

YII2框架集成go!aop

AOP实践:YII2框架本身拥有一个功能,叫做行为.它可以动态的为当前的类附加额外的功能,但这种功能在代码层级结构是静态的,有侵入性的。下面以YII2框架集成go!aop库为例,介绍在YII2中如何实现AOP编程.(go!aop简介,可以参考go!aop的官网.)由于YII框架拥有自己的类加载器,所在集成go!aop的时候,不能正常的工作,所以要将其禁用掉...

网页仿 Office 2003 的工具条

网页仿 Office 2003 的工具条   [ 日期:2005-01-27 ]   [ 来自:网上摘录 ]<html><head><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content=...

DataX环境配置

摘要: DataX(3.0)配置过程 配置过程以及插件配置 1、DataX(3.0)地址:https://github.com/alibaba/DataX 官方提供的配置需求:本例使用了JDK1.8 Python使用了CentOS预装的版本。 System Requirements: Linux、Windows JDK(1.6以上,推荐1.6) P...

Spring-boot 数据源 事务 多数据源 以及 多数据源事务 问题 简单笔记

<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${dynamic.versio...

Bing Maps进阶系列三:使用地图图像服务(ImageryService)

  地图图像服务(ImageryService)提供了根据地理位置(经度和纬度)坐标和地图的缩放级别解析出对应于地图图片系统的完整地图数据元数据,包括图片映射地址、图片大小等一系列详细参数。通过该服务的服务接口也可以反向实现通过指定地理位置坐标、地图缩放级别和图片大小(高度和宽度)来生成不同的地图图片。   一、添加ImageryService的Web服务引...

Unity3D性能优化

一、美术资源优化   1.动态物体,角色、怪物、NPC (1)控制面的数量,300-2000个 (2)控制Skinner Mesh Renderer的数量,1个 (3)控制材质数量,1-3个 (4)控制骨骼的数量,小于30个 2.静态物体 (1)控制网格顶点数,少于500个 (2)标记为static,静态批处理 (3)移除不需要的组件 3.自带地形 (1)...