zoukankan      html  css  js  c++  java
  • SpringBoot整合Dubbox(无XML配置)

    简介

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

    基础整合

    1. 进入https://github.com/dangdangdotcom/dubbox ,将源码下载(当当网没有提交上maven仓库,所以不能直接从中央仓库依赖);打包进本地仓库
    mvn clean install -DskipTests
    
    1. 添加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>
    
    1. 添加配置类
    	@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;
    	    }
    	}
    
    1. 在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
    
    1. 提供者与消费者
    	提供者注解(实现类上):
    	@Service(包:com.alibaba.dubbo.config.annotation.Service)
    	@Component(包:org.springframework.stereotype.Component)
    	
    	消费者注解(Interface上):
    	@Reference(包:com.alibaba.dubbo.config.annotation.Reference)
    
    1. 注意!!!
      springboot的开发热部署包一定要去掉!不然会出BUG
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-devtools</artifactId>
    			<scope>runtime</scope>
    		</dependency>
    
    现在已经可以正常使用了,若想进行扩展,可以继续往下~

    指定序列化配置

    1. 添加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>
    
    1. application.properties中配置属性
    	#序列化方式(kryo是目前效率最高的)
    	dubbo.protocol.serialization=kryo
    	#序列化优化的实现类
    	dubbo.protocol.optimizer=
    
    1. 添加序列化实现类
    	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支持

    1. 添加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>
    
    1. 在配置类中添加方法
    	@Bean
        @ConfigurationProperties(prefix="dubbo.protocol.rest")
        public ProtocolConfig protocolRestConfig() {
        	ProtocolConfig protocolConfig = new ProtocolConfig();
        	return protocolConfig;
        }
    
    1. application.properties中配置属性
    	dubbo.protocol.rest.name=rest
    	dubbo.protocol.rest.port=8082
    	dubbo.protocol.rest.server=tomcat
    

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

    未经同意不得转载
  • 相关阅读:
    Qt QSS美化 基础知识
    Qt QSS教程 QComboBox
    Qt QSS教程 QSpinBox
    Qt QSS教程 QLineEdit
    Qt QSlider qss(round handle) 圆形滑块
    Qt QSS之QSlider滑动条美化
    Qt Creator中使用qss对界面美化没有作用(效果)的问题
    Qt Creator 设置Qss文件文本高亮
    tensorrt中builder.max_workspace_size的作用
    C++宏的一些较复杂的用法,反斜杠,do {}while(0)
  • 原文地址:https://www.cnblogs.com/Yeauty/p/7526106.html
Copyright © 2011-2022 走看看