医院信息化与智能化系统(17)

医院信息化与智能化系统(17)

这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置

如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应的代码

预约挂号微服务模块搭建

前端知识点补充,此章节不会详细讲具体前端的每个知识点

1、服务网关

API网关是微服务架构中的重要组成部分,作为所有客户端请求的统一入口,提供了一系列功能来管理和优化API的使用。

Spring Cloud Gateway:基于Spring的API网关,支持动态路由和过滤器。

创建service_getway模块,整合服务网关

除了引入必要依赖,还需要在application.properties文件配置:

  1. 服务端口和服务名
  2. nacos服务地址
  3. 设置路由id、路由uri、路径匹配

前提运行nacos

在运行时我出现了一个问题使用gateway报Error creating bean with name 'gatewayConfigurationService' defined in class path resource,网上对于这个问题普遍表示是多余的库引入了,不需要其他web相关依赖,但是这个库是父类直接引入的,所以借助CSDN其他博主聪明才智,我先主动再次把web项引入,设定其在test范围有效。这样操作,我成功运行了该getway模块启动类。

跨域问题解决

添加配置类,配置之后需要把之前添加的@CrossOrigin删掉

java 复制代码
@Configuration
public class CorsConfig {
    @Bean
    public 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);
    }
}

随后在前端测试的时候,我发现数据库信息找不到,显示NetworkError500等信息,我首先保证了nacos注册中心是注册了hospcmn两个模块的,并发现其实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 项目结构-->模块删除依赖时,我碰到两个问题:

  1. 删除依赖报错:源根 'xx' 在模块 '' 中重复,它的解决办法就是去找哪里重复了,可以根据我下方的图查看,一般是在右侧添加内容根下方,会出现重复文件设定
  2. 依靠这里删除依赖,有的依赖即使删除了,在你重新加载Maven项目(Maven界面刷新按钮),它还是删不掉,无奈我这里选择改变使用范围。

这里是我的具体做法,供参考。

xml 复制代码
 <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>
相关推荐
圆山猫5 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
城管不管5 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
IT小白杨5 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
豆瓣鸡6 小时前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖6 小时前
Java深入解析篇九之NIO详解
java·网络·nio
The Chosen One9856 小时前
高进度算法模板速记(待完善)
java·前端·算法
极光代码工作室9 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
Leighteen9 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
名字还没想好☜10 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine
圆山猫10 小时前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v