SpringBoot2.0.6集成Dubbo(零xml)

springboot集成dubbo有多种方式,这里介绍一种比较新的不用xml的方式分享给大家,用到依赖dubbo-spring-boot-starter

项目环境:win10+jdk1.8+zookeeper3.4.13+springboot2.0.6

zookeeper的安装和配置不了解的,读者大人请自行百度。

项目运行前,首先启动zookeeper的zkServer.cmd。

项目结构

SpringBoot2.0.6集成Dubbo(零xml)_第1张图片

spring-dubbo-test:父级项目,简单的maven项目,未用任何模板

dubbo-api:接口,简单的maven项目,未用任何模板

dubbo-consumer和dubbo-provider:消费端和服务端,新建的SpringBoot项目

父级项目的pom.xml



    4.0.0

    com.changan
    spring-dubbo-test
    1.0-SNAPSHOT

    
        dubbo-api
        dubbo-consumer
        dubbo-provider
    

    pom

    springboot-dubbo
    Demo project for Spring Boot And Dubbo

    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.6.RELEASE
         
    

    
        UTF-8
        UTF-8
        1.8
        4.0.1
        3.4.13
        0.2.0
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
        
            com.alibaba.boot
            dubbo-spring-boot-starter
            ${dubbo.starter.version}
        

        
            org.apache.curator
            curator-framework
            ${curator-framework.version}
        

        
            org.apache.zookeeper
            zookeeper
            ${zookeeper.version}
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

dubbo-api

结构

SpringBoot2.0.6集成Dubbo(零xml)_第2张图片

接口pom.xml



    4.0.0

    com.changan.api
    dubbo-api
    0.0.1-SNAPSHOT
    jar

    dubbo-api
    Demo project for Spring Boot

    
        spring-dubbo-test
        com.changan
        1.0-SNAPSHOT
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

测试项目,接口中只有一个方法

package com.changan.api;

/**
 * @author zhanganbing
 * @date 2018/10/28/028 20:42
 * @desc 服务接口
 */
public interface DubboProviderService {
    String sayHello();
}

 

dubbo-consumer

结构

SpringBoot2.0.6集成Dubbo(零xml)_第3张图片

消费端pom.xml



	4.0.0

	com.changan.consumer
	dubbo-consumer
	0.0.1-SNAPSHOT
	jar

	dubbo-consumer
	Demo project for Spring Boot

	
		spring-dubbo-test
		com.changan
		1.0-SNAPSHOT
	

	
		UTF-8
		UTF-8
		1.8
	

	

		
			com.changan.api
			dubbo-api
			0.0.1-SNAPSHOT
		

		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	



application.yml

dubbo:
  application:
    name: dubbo-consumer
  registry:
    address: zookeeper://127.0.0.1:2181      
  protocol:
    name: dubbo
    serialization: hessian2
    port: 20881
  consumer:
    timeout: 1000
server:
  port: 9091
spring:
  application:
    name: dubbo-consumer

消费端web DubboTestController代码:

package com.changan.dubboconsumer.web;

import com.alibaba.dubbo.config.annotation.Reference;
import com.changan.api.DubboProviderService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
*@author zhanganbing
*@date 2018/10/31/031 22:12
*/
@RestController
@RequestMapping("/test")
public class DubboTestController {

    @Reference
    private DubboProviderService dubboProviderService;

    @RequestMapping("/hello")
    public String sayHelloToDubbo(){
        return dubboProviderService.sayHello();
    }
}

这里有两点值得注意:

不能使用@Autowired自动注入,而要用Dubbo提供的@Reference注解

pom.xml一定要依赖于api,即添加api的dependency

dubbo-provider

结构

SpringBoot2.0.6集成Dubbo(零xml)_第4张图片

服务端pom.xml



	4.0.0

	com.changan.provider
	dubbo-provider
	0.0.1-SNAPSHOT
	jar

	dubbo-provider
	Demo project for Spring Boot

	
		spring-dubbo-test
		com.changan
		1.0-SNAPSHOT
	

	
		UTF-8
		UTF-8
		1.8
	

	

		
			com.changan.api
			dubbo-api
			0.0.1-SNAPSHOT
		

		
			org.springframework.boot
			spring-boot-starter-web
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	



application.yml

dubbo:
  application:
    name: dubbo-provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    name: dubbo
    serialization: hessian2
    port: 20880
  provider:
    timeout: 1000
server:
  port: 9092
spring:
  application:
    name: dubbo-provider

服务端DubboProviderServiceImpl代码

package com.changan.dubboprovider.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.changan.api.DubboProviderService;
/**
*@author zhanganbing
*@date 2018/10/31/031 22:17
*/
@Service
public class DubboProviderServiceImpl implements DubboProviderService {
    @Override
    public String sayHello() {
        return "hello dubbo!!!!";
    }
}

这里也有两点值得注意:

@Service必须使用dubbo提供的

pom.xml一定要依赖于api,即添加api的dependency

dubbo配置介绍

 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
eg、

 引用服务配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
eg、

 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
eg、

 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
eg、
    

 模块配置,用于配置当前模块信息,可选。
 注册中心配置,用于配置连接注册中心相关信息。
eg、

 监控中心配置,用于配置连接监控中心相关信息,可选。
 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
 用于指定方法参数配置。

yml可以类比设置

运行效果

运行两个springboot项目的启动类,启动类上必须加注解@EnableDubbo

用浏览器访问路径

SpringBoot2.0.6集成Dubbo(零xml)_第5张图片

项目github地址:https://github.com/Jackson-zhanganbing/spring-dubbo-test

你可能感兴趣的:(Java技术)