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

目录
相关文章
|
2月前
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
188 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
4月前
|
XML 人工智能 Java
Spring Boot集成Aviator实现参数校验
Aviator是一个高性能、轻量级的Java表达式求值引擎,适用于动态表达式计算。其特点包括支持多种运算符、函数调用、正则匹配、自动类型转换及嵌套变量访问,性能优异且依赖小。适用于规则引擎、公式计算和动态脚本控制等场景。本文介绍了如何结合Aviator与AOP实现参数校验,并附有代码示例和仓库链接。
298 0
|
4月前
|
安全 Java 数据库
第16课:Spring Boot中集成 Shiro
第16课:Spring Boot中集成 Shiro
737 0
|
4月前
|
消息中间件 存储 Java
第15课: Spring Boot中集成ActiveMQ
第15课: Spring Boot中集成ActiveMQ
465 0
|
5月前
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
614 0
|
8月前
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
442 0
|
8月前
|
安全 Java 数据安全/隐私保护
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 三大核心组件
本课程介绍如何在Spring Boot中集成Shiro框架,主要讲解Shiro的认证与授权功能。Shiro是一个简单易用的Java安全框架,用于认证、授权、加密和会话管理等。其核心组件包括Subject(认证主体)、SecurityManager(安全管理员)和Realm(域)。Subject负责身份认证,包含Principals(身份)和Credentials(凭证);SecurityManager是架构核心,协调内部组件运作;Realm则是连接Shiro与应用数据的桥梁,用于访问用户账户及权限信息。通过学习,您将掌握Shiro的基本原理及其在项目中的应用。
329 0
|
8月前
|
NoSQL Java 关系型数据库
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
本文介绍在 Spring Boot 中集成 Redis 的方法。Redis 是一种支持多种数据结构的非关系型数据库(NoSQL),具备高并发、高性能和灵活扩展的特点,适用于缓存、实时数据分析等场景。其数据以键值对形式存储,支持字符串、哈希、列表、集合等类型。通过将 Redis 与 Mysql 集群结合使用,可实现数据同步,提升系统稳定性。例如,在网站架构中优先从 Redis 获取数据,故障时回退至 Mysql,确保服务不中断。
339 0
微服务——SpringBoot使用归纳——Spring Boot 中集成Redis——Redis 介绍
|
2月前
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
249 0

热门文章

最新文章

下一篇
oss云网关配置