论dubbo版本升级的重要性【spring boot +dubbo】

dubbo集成到spring boot中,充当消费者

使用的是注解的配置方式。

1、pom.xml中添加

<dependency>  
    <groupId>com.alibaba</groupId>  
    <artifactId>dubbo</artifactId>  
    <version>2.5.4</version>  
    <scope>provided</scope>  
    <exclusions>  
        <exclusion>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>
<dependency>
	<groupId>com.101tec</groupId>
	<artifactId>zkclient</artifactId>
	<version>0.10</version>
</dependency>

2、添加dubbo基础配置DubboBaseConfig.java
import org.springframework.context.annotation.Bean;


import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.RegistryConfig;


public class DubboBaseConfig {


    @Bean
    public RegistryConfig registry() {
        RegistryConfig registryConfig = new RegistryConfig();
        registryConfig.setAddress("127.0.0.1:2181");
        registryConfig.setProtocol("zookeeper");
        return registryConfig;
    }
    
    @Bean
    public ApplicationConfig application() {
        ApplicationConfig applicationConfig = new ApplicationConfig();
        applicationConfig.setName("o2o-platform");
        return applicationConfig;
    }
    
} 

3、添加bean引用DubboReferenceConfig.java继承DubboBaseConfig

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

import com.alibaba.dubbo.config.spring.ReferenceBean;
import com.aomygod.pay.PayService;

@Configuration
public class DubboReferenceConfig extends DubboBaseConfig {

    @Bean
    public ReferenceBean<PayService> payService() {
        ReferenceBean<PayService> ref = new ReferenceBean<>();
        ref.setGroup("o2o");
        ref.setVersion("1.0");
        ref.setInterface(PayService.class);
        ref.setCheck(false);

        return ref;
    }
}

4、Spring注解方式直接使用bean

@Autowired
private PayService payService;

然后就报错了:interface  is not visible from class loader

一天的时间全坑在里面,这种查,断点进去看:


if (tmp != ics[i])
                throw new IllegalArgumentException(ics[i] + " is not visible from class loader");


发现tmp 和 ics[i] 值相同但对象不一样,难道dubbo和spring类加载器不一致或冲突的问题。。。

各种找解决方案,还是没解决了,最后看maven库dubbo最新版本是 2.5.7

就试了一下升级版本

<dependency>  
    <groupId>com.alibaba</groupId>  
    <artifactId>dubbo</artifactId>  
    <version>2.5.7</version>  
    <scope>provided</scope>  
    <exclusions>  
        <exclusion>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring</artifactId>  
        </exclusion>  
    </exclusions>  
</dependency>
没想到,真的就可以了,好坑爹


猜你喜欢

转载自blog.csdn.net/xiasihua88/article/details/78632161
今日推荐