spring-boot 速成(7) 集成dubbo

简介: github上有一个开源项目spring-boot-starter-dubbo 提供了spring-boot与dubbo的集成功能,直接拿来用即可。(记得给作者点赞,以示感谢!) 下面是使用步骤,先看下工程的大致结构: 一、引入相关的依赖项 1 subprojects { 2 ...

github上有一个开源项目spring-boot-starter-dubbo 提供了spring-boot与dubbo的集成功能,直接拿来用即可。(记得给作者点赞,以示感谢!)

下面是使用步骤,先看下工程的大致结构:

一、引入相关的依赖项

 1 subprojects {
 2     buildscript {
 3         ext {
 4             springBootVersion = '1.5.3.RELEASE'
 5         }
 6         repositories {
 7             mavenLocal()
 8             maven {
 9                 url "http://maven.aliyun.com/nexus/content/groups/public/"
10             }
11             mavenCentral()
12         }
13         dependencies {
14             classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
15         }
16     }
17 
18     apply plugin: "java"
19     apply plugin: "maven"
20     apply plugin: 'idea'
21 
22 
23     targetCompatibility = 1.8
24     sourceCompatibility = 1.8
25 
26     repositories {
27         mavenLocal()
28         maven {
29             url "http://maven.aliyun.com/nexus/content/groups/public/"
30         }
31         mavenCentral()
32     }
33 
34     configurations.all {
35         resolutionStrategy.cacheChangingModulesFor 1, "minutes"
36     }
37 
38     dependencies {
39         compile('io.dubbo.springboot:spring-boot-starter-dubbo:1.0.0')
40         compile('org.springframework.boot:spring-boot-starter-web:1.5.3.RELEASE')
41     }
42 }
View Code

这是最外层根目录下的build.gradle,关键地方就是最后dependencies引入的2个依赖项

 

二、service-api中定义接口

1 package com.cnblogs.yjmyzz.service.api;
2 
3 /**
4  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
5  */
6 public interface DemoService {
7     String hello(String nickName);
8 }
View Code

这一步平淡无奇,没什么好说的

 

三、service-provider

3.1 提供接口实现

 1 package com.cnblogs.yjmyzz.service.impl;
 2 
 3 import com.alibaba.dubbo.config.annotation.Service;
 4 import com.cnblogs.yjmyzz.service.api.DemoService;
 5 import org.slf4j.Logger;
 6 import org.slf4j.LoggerFactory;
 7 
 8 /**
 9  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
10  */
11 @Service(version = "1.0.0")
12 public class DemoServiceImpl implements DemoService {
13 
14     Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
15 
16     public String hello(String nickName) {
17         logger.info(nickName + " call me!");
18         return String.format("hi , %s!", nickName);
19     }
20 }
View Code

常规套路,不用多说

3.2 编写ServiceProvider主类

 1 package com.cnblogs.yjmyzz.service;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * Created by yangjunming on 2017/5/21.
 8  */
 9 @SpringBootApplication
10 public class ServiceProvider {
11     public static void main(String[] args) {
12         SpringApplication.run(ServiceProvider.class, args);
13     }
14 }
View Code

仍然是spring-boot的经典套路,跟dubbo也没任何关系

3.3 application.yml配置

 1 server:
 2   port: 8001
 3 
 4 spring:
 5   dubbo:
 6     scan: com.cnblogs.yjmyzz.service
 7     application:
 8       name: provider
 9     registry:
10       address: zookeeper://127.0.0.1:2181
11     protocol:
12       name: dubbo
13       port: 20880

这里是重点,指定了dubbo服务提供方启动所需的zk注册地址,协议类型及端口,包括扫描的包。

 

四、service-consumer

4.1 定义一个辅助用的Proxy

 1 package com.cnblogs.yjmyzz.service.proxy;
 2 
 3 import com.alibaba.dubbo.config.annotation.Reference;
 4 import com.cnblogs.yjmyzz.service.api.DemoService;
 5 import org.springframework.stereotype.Component;
 6 
 7 /**
 8  * Created by yangjunming on 2017/5/21.
 9  */
10 @Component
11 public class ServiceProxy {
12 
13     @Reference(version = "1.0.0")
14     public DemoService demoService;
15 }

就是一个标准的spring组件(不管是叫proxy还是叫container都无所谓,随个人喜好),在该组件中持有对Service的引用实例,注意:如果指定了version,则该版本号要与service-provider中的版本号一致

4.2 调用服务

 1 package com.cnblogs.yjmyzz.service;
 2 
 3 import com.cnblogs.yjmyzz.service.proxy.ServiceProxy;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 import org.springframework.context.ConfigurableApplicationContext;
 7 
 8 /**
 9  * Created by 菩提树下的杨过(http:/yjmyzz.cnblogs.com) on 2017/5/21.
10  */
11 @SpringBootApplication
12 public class ServiceConsumer {
13 
14     public static void main(String[] args) {
15         ConfigurableApplicationContext ctx = SpringApplication.run(ServiceConsumer.class, args);
16         ServiceProxy proxy = ctx.getBean(ServiceProxy.class);
17         System.out.println(proxy.demoService.hello("菩提树下的杨过"));//调用服务
18     }
19 }
View Code

一看即明,不多解释。

4.3 application.yml配置

 1 server:
 2   port: 8002
 3 
 4 spring:
 5   dubbo:
 6     scan: com.cnblogs.yjmyzz.service
 7     application:
 8       name: consumer
 9     registry:
10       address: zookeeper://127.0.0.1:2181

ok,搞定!

 

上述示例源代码,已托管至github,有需要的朋友自行下载:https://github.com/yjmyzz/spring-boot-dubbo-demo

目录
相关文章
|
21天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
2月前
|
Dubbo Java 应用服务中间件
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
实战指南:如何在Spring Boot中无缝整合Dubbo【四】
44 0
|
2月前
|
安全 Java 数据库
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
后端进阶之路——万字总结Spring Security与数据库集成实践(五)
|
3月前
|
Dubbo Java 应用服务中间件
Spring Boot Dubbo 构建分布式服务
Spring Boot Dubbo 构建分布式服务
47 0
|
1月前
|
SpringCloudAlibaba Dubbo Java
SpringCloud Alibaba集成Dubbo实现远程服务间调用
SpringCloud Alibaba集成Dubbo实现远程服务间调用
|
3月前
|
JSON Dubbo Java
微服务框架(二十)Dubbo Spring Boot 生产就绪特性
  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为Dubbo Spring Boot 生产就绪特性
|
3月前
|
Dubbo Java 应用服务中间件
微服务框架(十六)Spring Boot及Dubbo zipkin 链路追踪组件埋点
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文第一部分为调用链、OpenTracing、Zipkin和Jeager的简述;第二部分为Spring Boot及Dubbo zipkin 链路追踪组件埋点
|
3月前
|
Dubbo Java 应用服务中间件
微服务框架(九)Spring Boot 通用Dubbo Parent POM
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。   本文为通用Dubbo Maven POM的集成,只需集成Parent POM即可使用
|
3月前
|
NoSQL Java Redis
Spring Boot集成Redisson详细介绍
Redisson是一个用于Java的分布式和高可用的Java对象的框架,它基于Redis实现。在Spring Boot应用程序中集成Redisson可以帮助我们更轻松地实现分布式锁、分布式对象、分布式集合等功能。本文将介绍如何在Spring Boot项目中集成Redisson,并展示一些基本用法。
460 2
Spring Boot集成Redisson详细介绍
|
3天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
28 0
【Spring系列】Sping VS Sping Boot区别与联系

热门文章

最新文章