【dubbo】Spring boot与dubbo整合的三种方式

方式一

使用注解的方式

导入dubbo-starter
在application.properties配置属性

使用@Service暴露服务
使用@Reference引用服务

使用@EnableDubbo开启注解Dubbo功能
或者配置包扫描

dubbo.scan.base-packages=com.atguigu.gmall

开启注解、包扫描,配置一个即可

这种方式
可以在@Service、@Reference注解中配置属性
属于类的配置,无法精确到方法的配置

方式二

使用dubbo的xml配置文件

导入dubbo-starter
使用@ImportResource导入dubbo的配置文件即可

@ImportResource(locations="classpath:provider.xml")

dubbo的配置文件,之前怎么写
现在还是怎么写,没有特殊要求

这种方式
可以做到方法的精确配置

方式三

使用注解API的方式

将每一个组件手动创建到容器中
让dubbo来扫描其他的组件
官网参考:http://dubbo.apache.org/zh-cn/docs/user/configuration/api.html

参考实例:

package com.atguigu.gmall.config;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.MethodConfig;
import com.alibaba.dubbo.config.MonitorConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.ProviderConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import com.atguigu.gmall.service.UserService;

@Configuration  // 这是个注解不能丢
public class MyDubboConfig {
	
	@Bean // 这是个注解不能丢
	public ApplicationConfig applicationConfig() {
		ApplicationConfig applicationConfig = new ApplicationConfig();
		applicationConfig.setName("boot-user-service-provider");
		return applicationConfig;
	}
	
	//
	@Bean
	public RegistryConfig registryConfig() {
		RegistryConfig registryConfig = new RegistryConfig();
		registryConfig.setProtocol("zookeeper");
		registryConfig.setAddress("127.0.0.1:2181");
		return registryConfig;
	}
	
	//
	@Bean
	public ProtocolConfig protocolConfig() {
		ProtocolConfig protocolConfig = new ProtocolConfig();
		protocolConfig.setName("dubbo");
		protocolConfig.setPort(20882);
		return protocolConfig;
	}
	
	/**
	 *
		
	
	 */
	@Bean
	public ServiceConfig<UserService> userServiceConfig(UserService userService){
		ServiceConfig<UserService> serviceConfig = new ServiceConfig<>();
		serviceConfig.setInterface(UserService.class);
		serviceConfig.setRef(userService);
		serviceConfig.setVersion("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);
		
		//ProviderConfig
		//MonitorConfig
		
		return serviceConfig;
	}

}

配置包扫描路径

可以,使用@DubboComponentScan注解
也可以,使用@EnableDubbo注解

@EnableDubbo注解
其实,里面配置的就是@DubboComponentScan注解
扫描包路径

@EnableDubbo(scanBasePackages="com.atguigu.gmall")

或者

@DubboComponentScan(basePackages ="com.atguigu.gmall")

你可能感兴趣的:(Dubbo)