欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Springboot集成dubbo

程序员文章站 2022-04-30 17:46:18
...

Springboot集成dubbo

Springboot集成dubbo框架

时下Springboot框架已经成为一种主流,目前新项目启动整理一份集成dubbo框架的文档,以做记录。

一.pom文件核心配置

  <!-- dubbo -->
  <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>dubbo</artifactId>
       <version>2.6.0</version>
       <exclusions>
           <exclusion>
               <artifactId>spring</artifactId>
               <groupId>org.springframework</groupId>
           </exclusion>
       </exclusions>
   </dependency>
   <!-- zk -->
  <dependency>
  	<groupId>org.apache.zookeeper</groupId>
  	<artifactId>zookeeper</artifactId>
  	<version>3.4.13</version>
  	<exclusions>
  		<exclusion>
  			<groupId>org.slf4j</groupId>
  			<artifactId>slf4j-log4j12</artifactId>
  		</exclusion>
  		<exclusion>
  			<groupId>log4j</groupId>
  			<artifactId>log4j</artifactId>
  		</exclusion>
  	</exclusions>
  </dependency>
  <!-- zkclient -->
  <dependency>
       <groupId>com.github.sgroschupf</groupId>
       <artifactId>zkclient</artifactId>
       <version>0.1</version>
   </dependency>
   <!-- kryo -->
   <dependency>
      <groupId>de.javakaffee</groupId>
      <artifactId>kryo-serializers</artifactId>
      <version>0.38</version>
  </dependency>

-特别注意这里多了个kryo-serializers配置,是针对dubbo序列化的优化机制

二、启动扫描配置

@SpringBootApplication
@EnableDubbo(scanBasePackages = “com.example”)
public class DemoApplication {

  public static void main(String[] args) {
  	SpringApplication.run(DemoApplication.class, args);
  }	

}

  • 特别注意黄色部分此处启用dubbo扫描配置功能
  • scanBasePackages 表示要扫描项目目录

三、src/main/resources新增配置dubbo.properties

#应用名称
dubbo.application.name=dubbodemo
#注册中心协议
dubbo.registry.protocol=zookeeper
#注册中心地址,如果是集群127.0.0.1:2181,127.0.0.1:2181,127.0.0.1:2182
dubbo.registry.address=zookeeper://127.0.0.1:2181
#使用协议
dubbo.protocol.name=dubbo
#服务暴露端口
dubbo.protocol.port=20880
#服务序列化机制
dubbo.protocol.serialization=kryo
#服务启动时不启时以来检查
dubbo.consumer.check=false

四、代码实例

4.1生产者类

  • 首先定义一个接口

package com.example.dubbo;

public interface HelloService {

public void sayhello(String name);

}

  • 定义一个实现类

package com.example.demo.service;

import org.springframework.stereotype.Component;

import com.alibaba.dubbo.config.annotation.Service;
import com.example.dubbo.HelloService;

@Component(“helloServiceImpl”)
@Service(interfaceName=“com.example.dubbo.HelloService”)
public class HelloServiceImpl implements HelloService{

  @Override
  public void sayhello(String name) {
  	System.out.println("hello "+name+"!");
  }

}

  1. @Component 定义一个spring bean
  2. @Service 定义一个dubbo bean 特别注意service注解。
  3. interfaceName参数指明接口方便dubbo暴露这个接口。
  4. 如果HelloService当前项目需要使用直接使用@autowired,@Resource

4.2消费者类

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.dubbo.config.annotation.Reference;
import com.example.dubbo.HelloService;

@Controller
public class HelloController {

@Reference
private HelloService helloService;

@RequestMapping("/index")
@ResponseBody
public String index() {
  	  helloService.sayhello("zhuj");
      return "Greetings from Spring Boot!";
}

}

友情链接: dubbo官方网站说明文档

最后祝大家生活愉快!