一杯茶、一包烟、一个BUG改一天
首先,最后一步是困扰我最久的——修改数据库字段的属性。不然读取不到数据,返回空值。空指针异常看得我头皮发麻。
在把数据库字段修改正确后,我改的是对象
OrderInfo
(这里的是有个属性,没有和数据库一样,导致插入不了数据),并没有改数据库的字段,效果一样。
接着运行,报错
java.net.ConnectException: Connection refused: connect异常
因为我使用的是阿里云,nacos中间件,并且注册了网关。这里需要使用到另一个微服务hospital-manage,而该服务是在本地的,并没有进行nacos注册,所以出现该错误。产生了跨域问题:
三个地方,任何一个地方不相同,都会产生跨域问题
- 访问协议:协议不相同,比如http访问https。
- 访问地址:192.168.1.1去访问172.11.1.1
- 端口号:9528 访问8201
修改:
在该模块中配置nacos,
项目如何注册到nacos中心_阿木木fe的博客-CSDN博客_服务注册到nacos
添加依赖
<!--服务注册 nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
添加配置
spring:
cloud:
nacos:
discovery:
server-addr: 120.0.0.1:8848 #地址
成功添加到nacos
还需要配置到网关
#设置路由id
spring.cloud.gateway.routes[7].id=service-manage
#设置路由的uri,lb:负载均衡
spring.cloud.gateway.routes[7].uri=lb://service-manage
spring.cloud.gateway.routes[7].predicates= Path=/**
至此:解决了跨域问题
运行, 仍然空指针异常:
调试
医院的路径的端口是 9998,这里可能有问题
– 修改成9998后,发现医院返回的result仍为空。多次调试,发现manage数据库中少了orderInfo表,创建该表。并且和实体类字段对应。
– 继续调试,result仍未空,空指针要把我搞哭了。尝试手动往该表中添加一条数据。继续调试。 仍为空指针。。。
进一步调试
http://localhost:9998/order/submitOrder
尝试在浏览器访问该地址,失败。
分析:
该路径是需要请求的路径。
访问http://localhost:9998是没问题的。
在医院(manage)的HospitalController中确实有该方法
而且,已经进入了该方法,不是url问题。继续调试
进行了一次查询,并且有一条数据
但是,这里的返回了空指针。为什么?
该service是查Schedule数据库里的
此时我的数据库里是没有数据的。那么我先添加一条数据,重新调试。
此时,已经有数据,并不是空指针。
但是result仍为空。
继续调试,发现这里空指针
这里的respdata为空,而url和reqData都有数据。
继续往下
此时map是有数据的,最后返回的map的size为8,医院处理订单后,返回的map的size是8
这里返回一个空的result。
跳过了if,,中间的逻辑并没有执行。直接到达最后发送短信。
因为在if里面生成医院订单。被跳过了,所以数据库manage中并没有订单。
此时 已经基本把逻辑排完,突然想起,一个巨坑160巨坑。
这里将id改成了1L
,这是一个字符串。查看数据库
将其改为varchar。重新调试
!!!!泪目啊!!!!!太难了。。。
可以查看订单了…………