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+"!"); }
}
- @Component 定义一个spring bean
- @Service 定义一个dubbo bean 特别注意service注解。
- interfaceName参数指明接口方便dubbo暴露这个接口。
- 如果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官方网站说明文档
最后祝大家生活愉快!