Dubbo:整合SpringBoot的三种方式
1
导入dubbo-starter,在application.properties配置属性,使用@Service
暴露服务,使用@Reference
引用服务
一定要在启动文件中加入@EnableDubbo
启动dubbo的包扫描
1、引入spring-boot-starter以及dubbo和curator的依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2、配置application.properties
示例:
dubbo.application.name=gmall-user
dubbo.registry.protocol=zookeeper
dubbo.registry.address=192.168.67.159:2181
dubbo.scan.base-package=com.atguigu.gmall
dubbo.protocol.name=dubbo
application.name就是服务名,不能跟别的dubbo提供端重复
registry.protocol 是指定注册中心协议
registry.address 是注册中心的地址加端口号
protocol.name 是分布式固定是dubbo,不要改。
base-package 注解方式要扫描的包
使用注解:
1.dubbo提供的@Service 相当于
<!-- 指定需要暴露的服务 -->
<dubbo:service interface="com.tinstu.gmall.service.UserService" ref="userServiceImpl" />
2.dubbo提供的@Reference (不使用@Autowired) 相当于
<!--声明需要调用的远程服务的接口;生成远程服务代理-->
<dubbo:reference interface="com.tinstu.gmall.service.UserService" id="userService"></dubbo:reference>
【如果没有在配置中写dubbo.scan.base-package,还需要使用@EnableDubbo注解】
2
导入dubbo-starter,保留dubbo的的xml配置文件,在springboot的启动文件中引@ImportResource(locations="classpath:provider.xml")
然后再dubbo的xml配置文件中进行相关的配置!
3
使用注解API的方式:
将每一个组件手动创建到容器中,如提供者的MyDubboConfig.java
package com.tinstu.gmall.bootserviceprovider.config;
import com.alibaba.dubbo.config.*;
import com.tinstu.gmall.service.UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class MyDubboConfig {
// <!--当前应用的名字 -->
// <dubbo:application name="user-service-provider"></dubbo:application>
@Bean
public ApplicationConfig applicationConfig(){
ApplicationConfig application = new ApplicationConfig();
application.setName("user-service-provider");
return application;
}
// <!--指定注册中心的地址 -->
// <dubbo:registry address="zookeeper://120.48.39.100:2181" />
@Bean
public RegistryConfig registryConfig(){
RegistryConfig registryConfig = new RegistryConfig();
registryConfig.setProtocol("zookeeper"); // 多个协议可以用setProtocols()
registryConfig.setAddress("120.48.39.100:2181");
return registryConfig;
}
// <!--使用dubbo协议,将服务暴露在20880端口 -->
// <dubbo:protocol name="dubbo" port="20880" />
@Bean
public ProtocolConfig protocolConfig(){
ProtocolConfig protocolConfig = new ProtocolConfig();
protocolConfig.setName("dubbo");
protocolConfig.setPort(20882);
return protocolConfig;
}
// <!-- 指定需要暴露的服务 -->
// <dubbo:service interface="com.tinstu.gmall.service.UserService" ref="userServiceImpl" />
@Bean
public ServiceConfig<UserService> userServiceServiceConfig(UserService userService){
ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
serviceConfig.setInterface(UserService.class);
serviceConfig.setRef(userService);
serviceConfig.setValidation("1.0.0");
//配置每一个method的信息
MethodConfig methodConfig = new MethodConfig();
methodConfig.setName("getUserAddressList");
methodConfig.setTimeout(1000);
//将method的设置关联到service配置中
List<MethodConfig> methods = new ArrayList<>();
methods.add(methodConfig);
serviceConfig.setMethods(methods);
return serviceConfig;
}
}
阅读剩余
版权声明:
作者:Tin
链接:http://www.tinstu.com/1843.html
文章版权归作者所有,未经允许请勿转载。
THE END