经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
springboot整合dubbo的简单案例
来源:cnblogs  作者:那个帅气的程序猿  时间:2019/6/6 9:21:52  对本文有异议

使用框架:

  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

  1. package com.example.demo.model;

    @Entity
  2. public class User implements Serializable{
  3. private static final long serialVersionUID = 1L;
  4. @Id @GeneratedValue
  5. private long id;
  6. private String userName;
  7. private String password;
  8. private int age;
  9. public long getId() {
  10. return id;
  11. }
  12. //省略set get 方法

3、创建接口:

  1. package com.example.demo.service;
  2. import com.example.demo.model.User;
  3. public interface UserService {
  4. public void save(User user);
  5. public String sayHello(String word);
  6. }

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

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. </dependency>
  6.  
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-test</artifactId>
  10. <scope>test</scope>
  11. </dependency>
  12. <!-- 加入springboot与dubbo集成的起步依赖 -->
  13. <dependency>
  14. <groupId>com.alibaba.boot</groupId>
  15. <artifactId>dubbo-spring-boot-starter</artifactId>
  16. <version>0.2.0</version>
  17. </dependency>
  18.  
  19. <!-- 由于使用了zookeeper作为注册中心,则需要加入zookeeper的客户端jar包: -->
  20. <dependency>
  21. <groupId>com.101tec</groupId>
  22. <artifactId>zkclient</artifactId>
  23. <version>0.10</version>
  24. </dependency>
  25. <!-- spring-data-jpa -->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-data-jpa</artifactId>
  29. </dependency>
  30.  
  31. <dependency>
  32. <groupId>mysql</groupId>
  33. <artifactId>mysql-connector-java</artifactId>
  34. <scope>runtime</scope>
  35. </dependency>
  36. <!-- 添加接口服务 -->
  37. <dependency>
  38. <groupId>com.example</groupId>
  39. <artifactId>spring-boot-demo-dubbo-interface</artifactId>
  40. <version>0.0.1-SNAPSHOT</version>
  41. </dependency>
  42. </dependencies>

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

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. spring.jpa.properties.hibernate.hbm2ddl.auto=create
  6. spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
  7. spring.jpa.properties.hibernate.format_sql=true
  8. spring.jpa.show-sql=true
  9. # 访问端口
  10. server.port=8080
  11. # dubbo配置
  12. dubbo.application.name=springboot-dubbo-provider
  13. dubbo.registry.address=zookeeper://192.168.146.128:2181

3、开发编写Dubbo的接口实现类:

  1. package com.example.demo.service;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.stereotype.Component;
  4. import com.alibaba.dubbo.config.annotation.Service;
  5. import com.example.demo.model.User;
  6. import com.example.demo.repository.UserRepository;
  7. @Component //注册为spring bean
  8. @Service // 这注解是dubbo提供的
  9. public class UserServiceImpl implements UserService {
  10. @Autowired
  11. private UserRepository userRepository;
  12. @Override
  13. public void save(User user) {
  14. userRepository.save(user);
  15. }
  16. @Override
  17. public String sayHello(String word) {
  18. return word;
  19. }
  20. }

4、入口main程序启动Dubbo服务提供者:添加注解 @EnableDubbo

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
  5. @SpringBootApplication
  6. @EnableDubbo
  7. public class SpringBootDemoDubboProviderApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SpringBootDemoDubboProviderApplication.class, args);
  10. }
  11. }

 启动main ,服务发布到zookeeper 注册中心。

 

三、开发dubbo服务消费者:

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

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

 注意: 服务提供者 和 消费者都要配置 服务接口依赖 

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

  1. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. # WEB\u670D\u52A1\u7AEF\u53E3
  6. server.port=8081
  7. # dubbo\u914D\u7F6E
  8. dubbo.application.name=springboot-dubbo-consumer
  9. dubbo.registry.address=zookeeper://192.168.146.128:2181

 

4、编写一个Controller类,调用远程的Dubbo服务:

  1. package com.example.demo.controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import com.alibaba.dubbo.config.annotation.Reference;
  5. import com.example.demo.model.User;
  6. import com.example.demo.service.UserService;
  7. @RestController
  8. public class UserController {
  9. @Reference //该注解是dubbo提供的
  10. private UserService userService;
  11. @RequestMapping("/say")
  12. public String sayHello(String name) {
  13. return userService.sayHello(name);
  14. }
  15. @RequestMapping("/save")
  16. public void save() {
  17. User u = new User();
  18. u.setAge(20);
  19. u.setPassword("123");
  20. u.setUserName("zheng");
  21. userService.save(u);
  22. }
  23. }

 

 

5、启动类添加 开启dubbo 注解 @EnableDubbo

  1. package com.example.demo;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
  5. @SpringBootApplication
  6. @EnableDubbo
  7. public class SpringBootDemoDubboConsumerApplication {
  8. public static void main(String[] args) {
  9. SpringApplication.run(SpringBootDemoDubboConsumerApplication.class, args);
  10. }
  11. }

 

  6、启动main方法。

  7、调用远程接口:

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

    一个简单的springboot基于dubbo的服务接口开发完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

原文链接:http://www.cnblogs.com/qq99514925/p/10980041.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号