Spring Boot 整合 Dubbo 和 zookeeper

1)根据 dubbo 官方建议,首先创建一个接口项目,而这个项目只定义接口和实现类

    1.1  创建一个 maven 工程 ,用来管理所有的maven项目

    

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo.dubbo</groupId>
  <artifactId>spring-dubbo-zook</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>spring-dubbo-zook</name>
  <description>spring-dubbo-zook</description>
  
  <properties>
  	<java.version>1.8</java.version>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  
  <dependencyManagement>
  	<dependencies>
  		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter</artifactId>
		    <version>2.2.0.RELEASE</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-web</artifactId>
		    <version>2.2.0.RELEASE</version>
		</dependency>
		
  		
  		<!-- Dubbo Spring Boot Starter -->
	    <dependency>
	        <groupId>org.apache.dubbo</groupId>
	        <artifactId>dubbo-spring-boot-starter</artifactId>
	        <version>2.7.3</version>
	    </dependency> 
	    
	    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-framework</artifactId>
		    <version>4.2.0</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-recipes</artifactId>
		    <version>4.2.0</version>
		</dependency> 
    
	    <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<dependency>
		    <groupId>com.101tec</groupId>
		    <artifactId>zkclient</artifactId>
		    <version>0.11</version>
		    <exclusions>
              <exclusion>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
              </exclusion>
          </exclusions>
		</dependency>
  	</dependencies>
  </dependencyManagement>
  
  <build>
        <plugins>
            <!-- 编译插件 -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- 插件的版本 -->
                <version>3.5.1</version>
                <!-- 编译级别 -->
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <!-- 编码格式 -->
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
  <modules>
  <module>spring-interface</module>
  <module>spring-provider</module>
  <module>spring-consumer</module>
  </modules>
</project>

2) 创建接口

     2.2) 创建  service  接口包,并创建 UserService

package com.demo.springboot.service;

public interface UserService {
	String sayHello(String name);
}

    2.3) 将接口进行打包。

            maven -----> install

3) 创建服务提供者。

    3.1) 创建pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.demo.dubbo</groupId>
    <artifactId>spring-dubbo-zook</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>spring-provider</artifactId>
  <name>spring-provider</name>
  <description>spring-provider</description>
  
  <dependencies>
  
	  	<dependency>	
		    <groupId>com.demo.dubbo</groupId>
		    <artifactId>spring-interface</artifactId>
		    <version>0.0.1-SNAPSHOT</version>
	  	</dependency>
  	<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
  		
  		<!-- Dubbo Spring Boot Starter -->
	    <dependency>
	        <groupId>org.apache.dubbo</groupId>
	        <artifactId>dubbo-spring-boot-starter</artifactId>
	    </dependency> 
	    
	    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-framework</artifactId>		    
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-recipes</artifactId>		    
		</dependency> 
    
	    <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<dependency>
		    <groupId>com.101tec</groupId>
		    <artifactId>zkclient</artifactId>		    
		    <exclusions>
              <exclusion>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
              </exclusion>
          </exclusions>
		</dependency>
  	
  </dependencies>
</project>

     3.2) 创建 application.properties 文件

     

server.port: 8085
  
dubbo.application.name: spring-provider
dubbo.registry.address: zookeeper://192.168.190.133:2181
dubbo.scan.base-packages:com.demo.springboot.service

      3.3) 创建 service 文件夹 , 并创建 UserServiceImpl 文件

package com.demo.springboot.service;
import org.springframework.stereotype.Service;
@Service
@org.apache.dubbo.config.annotation.Service(interfaceClass=UserService.class,version="1.0.1")
public class UserServiceImpl implements UserService{
	@Override
	public String sayHello(String name) {
		// TODO Auto-generated method stub
		return "Hello" + name;
	}	
}

    3.4) 创建  SpringProvider.java  程序入口。

package com.demo.springboot;
import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubboConfig
public class SpringProvider {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(SpringProvider.class, args);
	}
}

4)  创建服务消费者

    4.1) 创建pom文件

    

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.demo.dubbo</groupId>
    <artifactId>spring-dubbo-zook</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>spring-consumer</artifactId>
  <name>spring-consumer</name>
  <description>spring-consumer</description>
  
  <dependencies>
  	<dependency>	
		    <groupId>com.demo.dubbo</groupId>
		    <artifactId>spring-interface</artifactId>
		    <version>0.0.1-SNAPSHOT</version>
	  	</dependency>
  	<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
  		
  		<!-- Dubbo Spring Boot Starter -->
	    <dependency>
	        <groupId>org.apache.dubbo</groupId>
	        <artifactId>dubbo-spring-boot-starter</artifactId>
	    </dependency> 
	    
	    <!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-framework</artifactId>		    
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
		<dependency>
		    <groupId>org.apache.curator</groupId>
		    <artifactId>curator-recipes</artifactId>		    
		</dependency> 
    
	    <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
		<dependency>
		    <groupId>com.101tec</groupId>
		    <artifactId>zkclient</artifactId>		    
		    <exclusions>
              <exclusion>
                  <groupId>log4j</groupId>
                  <artifactId>log4j</artifactId>
              </exclusion>
              <exclusion>
                  <groupId>org.slf4j</groupId>
                  <artifactId>slf4j-log4j12</artifactId>
              </exclusion>
          </exclusions>
		</dependency>
  </dependencies>
</project>

     4.2)创建 application.properties 文件  

server.port=80

dubbo.application.name=spring-consumer
dubbo.registry.address=zookeeper://192.168.190.133:2181

    4.3) 创建controller ,并创建 UserController.java文件

import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.demo.springboot.service.UserService;
@RestController
public class UserController {
    
	@Reference(interfaceClass=UserService.class,version="1.0.1")
	private UserService userService;
	
	@GetMapping("/get/{name}")
	public String getUserName(@PathVariable("name") String name) {
		return userService.sayHello(name);
	}
}

    4.4)创建主启动类。SpringConsumer.java

package com.demo.springboot;

import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfig
public class SpringConsumer {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(SpringConsumer.class, args);	
	}
}

5) 包结构

发布了17 篇原创文章 · 获赞 0 · 访问量 1950

猜你喜欢

转载自blog.csdn.net/FOGUANGPUZHAOFOFA/article/details/102951552