SpringBoot整合Dubbox(无XML配置)

##简介
Dubbox是当当网对阿里的Dubbo进行增强的一个分支。在使用springboot之后,我们发现很多配置并不一定要使用xml。这篇文章的目的是让你使用Dubbox时能像使用springboot的其它功能一样可以在application.properties中配置。

##基础整合

  • 进入https://github.com/dangdangdotcom/dubbox ,将源码下载(当当网没有提交上maven仓库,所以不能直接从中央仓库依赖);打包进本地仓库
mvn clean install -DskipTests
  • 添加Maven依赖
		<!-- zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- Dubbox -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.8.4</version>
        </dependency>
		<!-- springboot的注解处理器 -->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
  • 添加配置类
	@Configuration
	public class DubboConfig {
	
	    @Bean
	    @ConfigurationProperties(prefix="dubbo.application")
	    public ApplicationConfig applicationConfig() {
	        ApplicationConfig applicationConfig = new ApplicationConfig();
	        return applicationConfig;
	    }
	
	    @Bean
	    @ConfigurationProperties(prefix="dubbo.registry")
	    public RegistryConfig registryConfig() {
	        RegistryConfig registryConfig = new RegistryConfig();
	        return registryConfig;
	    }
	
	    @Bean
	    @ConfigurationProperties(prefix="dubbo.annotation")
	    public AnnotationBean annotationBean() {
	        AnnotationBean annotationBean = new AnnotationBean();
	        return annotationBean;
	    }
	    
	    @Bean
	    @ConfigurationProperties(prefix="dubbo.protocol")
	    public ProtocolConfig protocolConfig() {
	    	ProtocolConfig protocolConfig = new ProtocolConfig();
	    	return protocolConfig;
	    }
	}
  • 在application.properties中配置Dubbox属性
	#应用名
	dubbo.application.name= 
	#负责人
	dubbo.application.owner= 
	#注册zookeeper的地址
	dubbo.registry.address=zookeeper://localhost:2181
	#扫包
	dubbo.annotation.package=com.yeauty.service
	#协议 (有 dubbo、rest、http、hessian、webservice) 
	dubbo.protocol.name=dubbo
	#协议暴露服务的端口(Integer类型)
	dubbo.protocol.port=20880
  • 提供者与消费者
	提供者注解(实现类上):
	@Service(包:com.alibaba.dubbo.config.annotation.Service)
	@Component(包:org.springframework.stereotype.Component)
	
	消费者注解(对应Interface类型的属性上):
	@Reference(包:com.alibaba.dubbo.config.annotation.Reference)
  • 注意!!!
    springboot的开发热部署包一定要去掉!不然会出BUG
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>

#####现在已经可以正常使用了,若想进行扩展,可以继续往下~

##指定序列化配置

  • 添加Maven依赖
		<dependency>
			<groupId>com.esotericsoftware.kryo</groupId>
			<artifactId>kryo</artifactId>
			<version>2.24.0</version>
		</dependency>
		<dependency>
			<groupId>de.javakaffee</groupId>
			<artifactId>kryo-serializers</artifactId>
			<version>0.26</version>
		</dependency>
  • application.properties中配置属性
	#序列化方式(kryo是目前效率最高的)
	dubbo.protocol.serialization=kryo
	#序列化优化的实现类
	dubbo.protocol.optimizer=
  • 添加序列化实现类
	public class SerializationOptimizerImpl implements SerializationOptimizer {
	
	    public Collection<Class> getSerializableClasses() {
	        List<Class> classes = new LinkedList<Class>();
	        
	        return classes;
	    }
	}

需要进行kryo序列化的类在这里add进list里面
详细可参考:https://dangdangdotcom.github.io/dubbox/serialization.html

###Dubbox的REST支持

  • 添加Maven依赖
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxrs</artifactId>
			<version>3.0.7.Final</version>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-client</artifactId>
			<version>3.0.7.Final</version>
		</dependency>
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>1.1.0.Final</version>
		</dependency>
		<!-- 如果要使用json序列化 -->
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jackson-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>
		<!-- 如果要使用xml序列化 -->
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxb-provider</artifactId>
			<version>3.0.7.Final</version>
		</dependency>
  • 在配置类中添加方法
	@Bean
    @ConfigurationProperties(prefix="dubbo.protocol.rest")
    public ProtocolConfig protocolRestConfig() {
    	ProtocolConfig protocolConfig = new ProtocolConfig();
    	return protocolConfig;
    }
  • application.properties中配置属性
	dubbo.protocol.rest.name=rest
	dubbo.protocol.rest.port=8082
	dubbo.protocol.rest.server=tomcat

更多属性配置和使用方法请参考:https://dangdangdotcom.github.io/dubbox/rest.html

######注:未经同意不得转载

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值