SpringBoot2.4.2和SpringCloud2020.0整合远程服务调用所发生的·异常

本文记录了解决Spring Cloud应用中Feign客户端负载均衡配置缺失导致的启动异常及远程调用时出现的抽象方法错误的过程,最终通过调整Spring Boot和Spring Cloud版本解决了问题。

启动时抛出第一个异常
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘memberController’: Unsatisfied dependency expressed through field ‘couponFeign’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘com.atguigu.gulimall.member.feign.CouponFeign’: FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessorAutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1415) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:608) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.lambdaAutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1415) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:608) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.lambdaAutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1415) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:608) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.lambdadoGetBean0(AbstractBeanFactory.java:335) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923) [spring−context−5.3.3.jar:5.3.3]atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) [spring−context−5.3.3.jar:5.3.3]atorg.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) [spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)[spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)[spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)[spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:326)[spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1311)[spring−boot−2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1300)[spring−boot−2.4.2.jar:2.4.2]atcom.atguigu.gulimall.member.GulimallMemberApplication.main(GulimallMemberApplication.java:30)[classes/:na]Causedby:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname′com.atguigu.gulimall.member.feign.CouponFeign′:FactoryBeanthrewexceptiononobjectcreation;nestedexceptionisjava.lang.IllegalStateException:NoFeignClientforloadBalancingdefined.Didyouforgettoincludespring−cloud−starter−loadbalancer?atorg.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1884) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1268) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:267) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1605) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1562) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1343) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) [spring−beans−5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) ~[spring-context-5.3.3.jar:5.3.3] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) ~[spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) [spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) [spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) [spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) [spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1311) [spring-boot-2.4.2.jar:2.4.2] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) [spring-boot-2.4.2.jar:2.4.2] at com.atguigu.gulimall.member.GulimallMemberApplication.main(GulimallMemberApplication.java:30) [classes/:na] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.atguigu.gulimall.member.feign.CouponFeign': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1884) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1268) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:267) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1605) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1562) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1343) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.3.jar:5.3.3] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor0(AbstractBeanFactory.java:335) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) [springbeans5.3.3.jar:5.3.3]atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:923) [springcontext5.3.3.jar:5.3.3]atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:588) [springcontext5.3.3.jar:5.3.3]atorg.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:144) [springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:767)[springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:759)[springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426)[springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:326)[springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1311)[springboot2.4.2.jar:2.4.2]atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1300)[springboot2.4.2.jar:2.4.2]atcom.atguigu.gulimall.member.GulimallMemberApplication.main(GulimallMemberApplication.java:30)[classes/:na]Causedby:org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithnamecom.atguigu.gulimall.member.feign.CouponFeign:FactoryBeanthrewexceptiononobjectcreation;nestedexceptionisjava.lang.IllegalStateException:NoFeignClientforloadBalancingdefined.Didyouforgettoincludespringcloudstarterloadbalancer?atorg.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1884) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1268) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:267) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1605) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1562) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1343) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1300) [springbeans5.3.3.jar:5.3.3]atorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessorAutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.3.3.jar:5.3.3]
… 20 common frames omitted
Caused by: java.lang.IllegalStateException: No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer?
at org.springframework.cloud.openfeign.FeignClientFactoryBean.loadBalance(FeignClientFactoryBean.java:309) ~[spring-cloud-openfeign-core-3.0.0.jar:3.0.0]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getTarget(FeignClientFactoryBean.java:335) ~[spring-cloud-openfeign-core-3.0.0.jar:3.0.0]
at org.springframework.cloud.openfeign.FeignClientFactoryBean.getObject(FeignClientFactoryBean.java:315) ~[spring-cloud-openfeign-core-3.0.0.jar:3.0.0]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:169) ~[spring-beans-5.3.3.jar:5.3.3]
… 31 common frames omitted

我添加依赖,运行ok,但是使用远程调用时又抛出第二个异常,

  <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
   </dependency>

第二个异常
java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;)Lorg/springframework/cloud/client/ServiceInstance;
at org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient.execute(FeignBlockingLoadBalancerClient.java:88) ~[spring-cloud-openfeign-core-3.0.0.jar:3.0.0]
at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:119) ~[feign-core-10.10.1.jar:na]
at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:89) ~[feign-core-10.10.1.jar:na]
at feign.ReflectiveFeignFeignInvocationHandler.invoke(ReflectiveFeign.java:100) [feign−core−10.10.1.jar:na]atcom.sun.proxy.FeignInvocationHandler.invoke(ReflectiveFeign.java:100) ~[feign-core-10.10.1.jar:na] at com.sun.proxy.FeignInvocationHandler.invoke(ReflectiveFeign.java:100) [feigncore10.10.1.jar:na]atcom.sun.proxy.Proxy91.memberCoupons(Unknown Source) ~[na:na]
at com.atguigu.gulimall.member.controller.MemberController.coupon(MemberController.java:41) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_181]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.3.jar:5.3.3]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1060) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:962) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.3.jar:5.3.3]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.3.jar:5.3.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) ~[tomcat-embed-core-9.0.41.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.3.jar:5.3.3]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.41.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.3.jar:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.3.jar:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.3.jar:5.3.3]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.3.jar:5.3.3]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.41.jar:9.0.41]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) [tomcat-embed-core-9.0.41.jar:9.0.41]

自己搜了并改了有两个小时,都不行,最后只好将SpringBoot版本降低2.2.1.RELEASE,并且配上对应的SpringCloud版本Hoxton.RELEASE,成功了。果然最新版本的一般都会出现各种bug,注:我现在用的是最新版本。

<think>好的,我现在需要处理用户关于Spring Boot 2.4.2Spring Cloud Alibaba Nacos Config 2021.1集成的请求,特别是使用spring.config.import加载Nacos配置的示例代码。首先,我得回忆一下Spring BootSpring Cloud Alibaba的版本兼容性。根据用户提供的引用[2],Spring Cloud Alibaba 2021.1对应的是Spring Cloud 2020.0.1Spring Boot 2.4.2,所以版本组合是正确的。 接下来,用户提到需要示例代码,因此我需要确保配置步骤正确。根据Spring Boot 2.4及以后的版本,配置导入方式从bootstrap.yml迁移到了使用spring.config.import,所以需要指导用户如何在application.yml中配置。需要包括Nacos服务器的地址、命名空间、data-id等信息。 另外,用户可能遇到的问题,比如依赖缺失。根据引用[3],新版本的Spring Boot不再自动包含某些包,比如spring-boot-starter-validation,但在这里可能需要的是spring-cloud-starter-alibaba-nacos-config。需要确认依赖是否正确引入,避免出现UnknownHostException,如引用[3]中的问题,可能与服务发现配置有关,但用户的问题集中在配置管理上。 然后,编写示例代码时,需要给出pom.xml中的依赖项,特别是确保Spring Cloud Alibaba的版本是2021.1,对应的Spring Boot2.4.2。同时,application.yml中的配置要正确使用spring.config.import属性,格式应该是nacos:nacos-server-ip:port?namespace=xxx&group=xxx&data-id=xxx。可能需要分步骤说明配置项,比如分解成Nacos服务器地址、命名空间、组data-id。 还要注意是否需要启用服务发现或配置管理的相关注解,比如@EnableDiscoveryClient,但根据Spring Cloud的惯例,可能已经通过依赖自动配置,但为了保险起见,可能在启动类上添加该注解。 最后,验证步骤,比如如何读取配置,可能需要一个RestController来测试配置是否成功加载。同时,提醒用户注意配置的优先级可能的覆盖问题,确保Nacos中的配置正确无误。 总结步骤:添加依赖、配置application.yml、添加启动类注解、编写测试接口、注意事项。需要检查每个步骤的正确性,避免遗漏关键配置项,如namespace的格式是否正确(比如不是名称而是ID),以及group是否正确(默认DEFAULT_GROUP)等。</think>### Spring Boot 2.4.2Spring Cloud Alibaba Nacos Config 2021.1集成示例 #### 1. 版本兼容性验证 根据引用[2],Spring Cloud Alibaba 2021.1版本兼容Spring Boot 2.4.x,符合要求[^2]。 #### 2. 添加依赖 ```xml <!-- pom.xml --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2021.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.4.2</version> </dependency> ``` #### 3. 配置application.yml ```yaml spring: application: name: demo-service config: import: nacos:${NACOS_SERVER:localhost:8848}?namespace=dev_namespace_id&group=DEFAULT_GROUP&data-id=demo-service.yaml cloud: nacos: username: nacos password: nacos config: server-addr: ${spring.config.import#nacos:} file-extension: yaml refresh-enabled: true ``` #### 4. 启动类配置 ```java @SpringBootApplication @EnableDiscoveryClient // 启用服务发现(可选) public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` #### 5. 验证配置读取 ```java @RestController @RefreshScope public class ConfigController { @Value("${custom.config.key:default}") private String configValue; @GetMapping("/config") public String getConfig() { return "Loaded value: " + configValue; } } ``` #### 注意事项 1. **命名空间**需使用ID而非名称(在Nacos控制台查看) 2. **data-id**需包含文件扩展名,如`demo-service.yaml` 3. 若出现`UnknownHostException`,检查Nacos服务地址是否可达[^3] 4. 配置优先级:`spring.config.import` > `bootstrap.yml` > 本地配置
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

console.log("")

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值