SpringCloud Alibaba使用dubbo做服务调用的问题

SpringBoot版本:2.2.1.RELEASE

SpringCloud版本:Hoxton.RELEASE

SpringCloud alibaba版本:2.2.0.RELEASE

nacos作为服务的注册与配置中心

如果使用以上版本整合的话,微服务模块要排除spring-cloud-openfeign-core这个包的依赖,要不然启动会报错,原因可能是SpringCloud alibaba2.2.0里有feign的相关依赖,jar包冲突了,因此也不能引入feign的相关依赖,

2020/07/22-13:34:26.550 [restartedMain] ERROR o.s.b.SpringApplication - [reportFailure,826] - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'feignTargeter' defined in class path resource [org/springframework/cloud/openfeign/FeignAutoConfiguration$DefaultFeignTargeterConfiguration.class]: Initialization of bean failed; nested exception is java.lang.IllegalAccessError: class org.springframework.cloud.openfeign.$Proxy273 cannot access its superinterface org.springframework.cloud.openfeign.Targeter
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:603)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
    at com.ruoyi.XtHrmApplication.main(XtHrmApplication.java:21)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: java.lang.IllegalAccessError: class org.springframework.cloud.openfeign.$Proxy273 cannot access its superinterface org.springframework.cloud.openfeign.Targeter
    at java.lang.reflect.Proxy.defineClass0(Native Method)
    at java.lang.reflect.Proxy.access$300(Proxy.java:228)
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:642)
    at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557)
    at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230)
    at java.lang.reflect.WeakCache.get(WeakCache.java:127)
    at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
    at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719)
    at com.alibaba.cloud.dubbo.openfeign.TargeterBeanPostProcessor.postProcessAfterInitialization(TargeterBeanPostProcessor.java:75)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:431)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1807)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)
    ... 20 common frames omitted
2020/07/22-13:34:26.661 [DubboShutdownHook] INFO  o.a.d.c.DubboShutdownHook - [run,70] -  [DUBBO] Run shutdown hook now., dubbo version: 2.7.6, current host: 192.168.10.25
2020/07/22-13:34:26.663 [DubboShutdownHook] INFO  o.a.d.r.s.AbstractRegistryFactory - [destroyAll,80] -  [DUBBO] Close all registries [], dubbo version: 2.7.6, current host: 192.168.10.25
2020/07/22-13:34:26.664 [DubboShutdownHook] INFO  o.a.d.c.e.l.LoggingEventListener - [onEvent,42] -  [DUBBO] Dubbo Service has been destroyed., dubbo version: 2.7.6, current host: 192.168.10.25
Disconnected from the target VM, address: '127.0.0.1:50535', transport: 'socket'

Process finished with exit code 1

 

所以我在父pom里引入以上依赖后,子pom模块要另外引入2.2.1版本的spring-cloud-starter-dubbo同时排除spring-cloud-openfeign-core

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
            <version>2.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-openfeign-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

我使用此版本的配置dubbo做服务调用就不能使用openfeign做服务调用,原理同上


版权声明:本文为weixin_38981756原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。