springboot整合dubbo-start

1、dubbo分布式框架的由provider,customer和api接口三部分组成;所以标准的做法是创建三个工程分别对应provider,customer,和api;


Api项目

由于api只是定义一些需要实现的功能,所以这一个项目只需要定义一些接口就行,在例子中,我们定义了一个ExampleService;

public interface ExampleService extends Serializable{

	public String SayHi(String name);
}

Provider项目

provider项目的功能是实现Api中所定义的各种接口,在github上teaey大神,开源了springboot框架下的dubbo-starter项目,具体地址:

https://github.com/teaey/spring-boot-starter-dubbo,dubbo-starter中引用的dubbo是2.5.4版本的,所以在使用dubbo-starter项目之前,可能需要先将dubbo项目从github上下载过来然后maven编译下,下载地址如下:

https://github.com/alibaba/dubbo

编译好之后,会得到dubbo-dubbo-2.5.4-SNAPSHOT的一个jar,添加到本地maven仓库中就行,然后在provider项目中引用dubbo-starter,整个pom如下:



	4.0.0

	com.hp
	dubbo-provider
	0.0.1-SNAPSHOT
	jar

	dubbo-provider
	dubbodemo

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

	
		UTF-8
		UTF-8
	

	

	  
            com.hp  
            dubbo-api  
            0.0.1-SNAPSHOT  
          
        
        
            io.dubbo.springboot
            spring-boot-starter-dubbo
            1.0.0
        
       
       
 		
        	
            	
                	org.springframework.boot
                	spring-boot-maven-plugin
                	1.3.6.RELEASE
            	
        	
   		 

然后在application.properties中声明一些配置如下:

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://172.16.1.55:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
spring.dubbo.scan=com.phu.DubboService
spring.dubbo.module.default=false

接着开始实现api中所定义的接口:

@Service(version = "1.0.0")
public class ExampleServiceImpl implements ExampleService{

	/**
	 * 
	 */
	private static final long serialVersionUID = -6591900875272367270L;
	

	@Override
	public String SayHi(String name) {
		// TODO Auto-generated method stub
		return "hi,provider:"+name;
	}
}

在这里@Service(version="1.0.0")标签的作用声明服务提供者的版本;


customer项目中,是使用provider项目中实现的接口,其pom的引用跟provider是一样的。

使用provider提供的服务时,加入@Reference(version="1.0.0")标签,正如前面Service标签提供的版本号

@Component
public class SayHiService {
	
	@Reference(version="1.0.0")
	ExampleService pSayHiService;
	
	public String sayHi(){
		return pSayHiService.SayHi("consumer");
	}
}
这样就可以引用provider提供的服务了;

PS:因为dubbo项目是注册在zookeeper上的,所以项目启动之前需要先打开zookeeper;

你可能感兴趣的:(Springboot)