springboot中nacos动态路由如何配置
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍springboot中nacos动态路由如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!nacos动态路由的配置首先。。。我自己有个服务器。在无聊之时写的
千家信息网最后更新 2025年11月09日springboot中nacos动态路由如何配置
这篇文章主要介绍springboot中nacos动态路由如何配置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
nacos动态路由的配置
首先。。。
我自己有个服务器。在无聊之时写的代码,主要是通过网关来调用接口所以有了下面的代码。
1.作为一个动态路由维护管理的类
@Servicepublic class DynamicRouteServiceImpl implements ApplicationEventPublisherAware { /** * */ @Autowired private RouteDefinitionWriter routeDefinitionWriter; private ApplicationEventPublisher publisher; /** * 增加路由 * @param definition * @return */ public String add(RouteDefinition definition) { routeDefinitionWriter.save(Mono.just(definition)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return "success"; } /** * 更新路由 * @param definition * @return */ public String update(RouteDefinition definition) { try { this.routeDefinitionWriter.delete(Mono.just(definition.getId())); } catch (Exception e) { return "update fail,not find route routeId: "+definition.getId(); } try { routeDefinitionWriter.save(Mono.just(definition)).subscribe(); this.publisher.publishEvent(new RefreshRoutesEvent(this)); return "success"; } catch (Exception e) { return "update route fail"; } } /** * 删除路由 * @param id * @return */ public String delete(String id) { try { this.routeDefinitionWriter.delete(Mono.just(id)); return "delete success"; } catch (Exception e) { e.printStackTrace(); return "delete fail"; } } @Override public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { this.publisher = applicationEventPublisher; }2.基于Nacos动态配置路由服务
@Componentpublic class DynamicRouteServiceImplByNacos implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(DynamicRouteServiceImplByNacos.class); @Autowired private DynamicRouteServiceImpl dynamicRouteService; @Value("${spring.cloud.nacos.discovery.server-addr}") private String address; @Value("${config.dataId}") private String dataId; @Value("${config.groupId}") private String groupId; @Value("${config.timeout}") private Long timeout; /* @Value("${config.ignore}") private String ignore;*/ /** * 监听Nacos Server下发的动态路由配置 */ public void dynamicRouteByNacosListener() { try { ConfigService configService = NacosFactory.createConfigService(address); configService.addListener(dataId, groupId, new Listener() { @Override public void receiveConfigInfo(String configInfo) { try { logger.info("================Nacos 配置中心路由配置信息已修改================\n" + configInfo + "\n\n"); List list = JSON.parseArray(configInfo, RouteDefinition.class); list.forEach(definition -> { dynamicRouteService.update(definition); }); } catch (Exception e) { e.printStackTrace(); } } @Override public Executor getExecutor() { return null; } }); /*configService.addListener(ignore, groupId, new Listener() { @Override public void receiveConfigInfo(String configInfo) { try { logger.info("================Nacos 配置中心忽略URL配置已修改================\n" + configInfo + "\n\n"); logger.info("\n" + configInfo + "\n\n"); List ignoreList = JSON.parseArray(configInfo, String.class); IgnoreRouteConfig.setIgnoreRouteArr(ignoreList); } catch (Exception e) { e.printStackTrace(); } } @Override public Executor getExecutor() { return null; } });*/ } catch (Exception e) { e.printStackTrace(); } } @Override public void run(String... args) throws Exception { dynamicRouteByNacosListener(); }} 3.yml配置
4. nacos网关配置
5.最后:我建的是
父子工程两个服务发到服务器后 注意注意注意!!!:一定要开启防火墙,登上阿里云自己的服务增加端口,然后再linux中也要增加端口 linux防火墙相关命令
删除 firewall-cmd --zone= public --remove-port=80/tcp --permanent
开放 firewall-cmd --zone=public --add-port=1935/tcp --permanent
查看状态 systemctl status firewalld
启动 systemctl start firewalld
查看已开启端口 firewall-cmd --list-ports
重启 firewall-cmd --reload
yml配置文件中 有一个这个端口 这个也要在阿里云上面还有服务器开启
这个就是接口访问时的网关端口号
Springboot配置Nacos出现的问题
报错信息
java.lang.ClassNotFoundException:org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
由于当前Nacos版本还不支持Springboot 2.4.+ 的版本,所以需要降一个版本 为2.3.+
具体如下
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:579) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:270) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:762) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:567) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:782) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:774) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:339) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:144) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74) ~[spring-cloud-context-2.2.5.RELEASE.jar:2.2.5.RELEASE] at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.5.jar:2.4.5] at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[na:na] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:375) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:333) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1340) ~[spring-boot-2.4.5.jar:2.4.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1329) ~[spring-boot-2.4.5.jar:2.4.5] at com.lenyuqin.product.ProductApplication.main(ProductApplication.java:14) ~[classes/:na]Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@1f89ab83] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) ~[spring-core-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:232) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.findLifecycleMetadata(InitDestroyAnnotationBeanPostProcessor.java:210) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(InitDestroyAnnotationBeanPostProcessor.java:149) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:294) ~[spring-context-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1098) ~[spring-beans-5.3.6.jar:5.3.6] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576) ~[spring-beans-5.3.6.jar:5.3.6] ... 31 common frames omittedCaused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na] at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3167) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods(Class.java:2310) ~[na:na] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.6.jar:5.3.6] ... 38 common frames omittedCaused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] ... 42 common frames omitted
以上是"springboot中nacos动态路由如何配置"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
配置
路由
动态
服务
端口
服务器
版本
网关
代码
信息
内容
接口
篇文章
防火墙
阿里
防火
无聊
两个
价值
兴趣
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国三网络技术语言真题
短链接服务器
华为网络安全
lol中国服务器日文版
职校网络安全大赛学习途径
软件开发被骗怎么处理
杭州师范大学网络安全考研
温州软件开发安全
网络安全的重要性宣讲稿
软件开发优秀员工自我评估
重庆市丐帮网络技术有限公司
奥哲网络安全手抄报
互联网 学校科技成果转化
秦始皇互联网科技
外网svn服务器
上传网络金融数据库
观看网络安全教育视频
数据库表怎么增加一个字段
利得科技属于互联网企业吗
北京网安趋势网络安全
电子发票服务器地址和端口怎么填
sql数据库实用案例教程
sql查询符合多对数据库
语音软件开发人
企业网络安全工程师简笔画
鲸捷数据库
浙江手机软件开发定制费用
杭州有朋网络技术有限公司地址
杭州有电脑软件开发培训班
即时通讯软件开发需要什么条件