医院信息化与智能化系统(17)
医院信息化与智能化系统(17)
这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置
如果你想通过文字描述或代码画流程图,可以试试PlantUML
,告诉GPT你的文件结构,让他给你对应的代码
预约挂号微服务模块搭建
前端知识点补充,此章节不会详细讲具体前端的每个知识点
1、服务网关
API网关
是微服务架构中的重要组成部分,作为所有客户端请求的统一入口,提供了一系列功能来管理和优化API的使用。
Spring Cloud Gateway:
基于Spring的API网关,支持动态路由和过滤器。
创建service_getway
模块,整合服务网关
除了引入必要依赖,还需要在application.properties文件配置:
- 服务端口和服务名
- nacos服务地址
- 设置路由id、路由uri、路径匹配
前提运行nacos
在运行时我出现了一个问题使用gateway报Error creating bean with name ‘gatewayConfigurationService‘ defined in class path resource
,网上对于这个问题普遍表示是多余的库引入了,不需要其他web相关依赖,但是这个库是父类直接引入的,所以借助CSDN其他博主聪明才智,我先主动再次把web项引入,设定其在test
范围有效。这样操作,我成功运行了该getway
模块启动类。
跨域问题解决
添加配置类,配置之后需要把之前添加的@CrossOrigin
删掉
@Configuration
public class CorsConfig {@Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowedHeader("*");UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());source.registerCorsConfiguration("/**", config);return new CorsWebFilter(source);}
}
随后在前端测试的时候,我发现数据库信息找不到,显示NetworkError
,500
等信息,我首先保证了nacos注册中心是注册了hosp
和cmn
两个模块的,并发现其实nacos设置的地址是虚拟机的地址
,但这并不影响它的使用。
也不是nacos端口号设置问题,如果是的话,getway的启动类
是无法成功运行的;
500
内部的前端报错原因打开看:org.springframework.core.io.buffer.DefaultDataBufferFactory cannot be cast to org.springframework.core.io.buffer.NettyDataBufferFactory java.lang.ClassCastException: ...
具体原因是: gateway默认使用的是webFlux,而Tomcat使用的是netty,项目中不应引入Tomcat-embed-core依赖。
所以做法就很简单了,该排除的排除,排除不了的改变使用范围,这里参考此处
在使用IDEA 项目结构
–>模块
删除依赖时,我碰到两个问题:
删除依赖报错:源根 'xx' 在模块 '' 中重复
,它的解决办法就是去找哪里重复了,可以根据我下方的图查看,一般是在右侧添加内容根
下方,会出现重复文件设定- 依靠这里删除依赖,有的依赖即使删除了,在你重新加载Maven项目(Maven界面
刷新按钮
),它还是删不掉,无奈我这里选择改变使用范围。
这里是我的具体做法,供参考。
<dependency><groupId>com.atguigu</groupId><artifactId>common-util</artifactId><version>0.0.1-SNAPSHOT</version><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></exclusion><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></exclusion><exclusion><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></exclusion><exclusion><artifactId>tomcat-embed-core</artifactId><groupId>org.apache.tomcat.embed</groupId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><exclusions><exclusion><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><scope>test</scope></dependency>