Spring 启动阶段接口 500

2021-03-17 11:32:58 +08:00
 telnetning

Spring 新人,请教下这个问题,搜索相关问题只搜索到 dubbo 延迟暴露 相关的,但是这个项目不是 dubbo 的,就是一般的 Spring Boot 应用。

问题是,在 Spring 启动阶段,会有大概 10s 的端口已监听但是访问 500 的情况。

具体是:

请教下大家,这个问题应该如何解决呢,正常的理想情况是,在整个应用启动完整之后,才监听端口,保证监听即可用。

2724 次点击
所在节点    Java
22 条回复
huifer
2021-03-17 11:34:46 +08:00
Bean 实例化顺序
chendy
2021-03-17 11:44:20 +08:00
你确定是因为未启动好报的 500 么?应用的报错是什么?
启动 20s 多少慢了点吧……
telnetning
2021-03-17 11:53:07 +08:00
@chendy 应该是的,中间报错的请求,是 getBean 的结果为 null
telnetning
2021-03-17 11:54:50 +08:00
@huifer 多谢,我了解下。是需要让对应的 Bean 在 Web 容器之前加载完成吗?
Kasumi20
2021-03-17 12:44:04 +08:00
Spring 监听端口吗?是 Servlet 容器在监听吧。。。
huifer
2021-03-17 12:50:04 +08:00
@telnetning 不如放出代码在看看,getBean 为 null 就说明 bean 没有加载
scxiazi
2021-03-17 12:51:56 +08:00
你倒是把报错信息放出来
telnetning
2021-03-17 14:45:43 +08:00
@Kasumi20 嗯嗯,是的
telnetning
2021-03-17 14:46:04 +08:00
@scxiazi 公司网络限制,贴不出来。。。
telnetning
2021-03-17 14:46:32 +08:00
@huifer 公司网络限制,贴不出来。。。
yRebelHero
2021-03-17 16:31:46 +08:00
另外的端口监听吗?试试在 Application 这个类 implements CommandLineRunner,再重写 run 方法新建一个线程来监听。我之前也遇到过类似的情况,就是需要监听另外的端口,但是这个端口始终没法监听到,具体报没报错忘了,但是我是这么解决的。
chenqh
2021-03-17 16:48:27 +08:00
java 启动这么慢的吗?
telnetning
2021-03-17 16:55:15 +08:00
@chenqh 我一直以为 Spring 应用就是这么慢来着。。。
chenqh
2021-03-17 17:01:57 +08:00
@telnetning 我用 py,启动不到 1s 钟的呀,可能是我用轻型框架的原因
qwerthhusn
2021-03-17 17:34:57 +08:00
报 500 看日志堆栈啊
arvinsilm
2021-03-17 18:06:27 +08:00
加个 filter 之类的东西,系统没启动完成返回统一错误信息
qinxi
2021-03-17 18:10:54 +08:00
@chenqh #12 解释型语言都快. 没运行到的 py 代码甚至不知道能不能跑
chenqh
2021-03-17 18:33:57 +08:00
@qinxi 原来是这个原因的吗,嗯嗯,应该是这个原因吧
bianjp
2021-03-17 21:03:34 +08:00
先使用 Spring Boot Actuator 的健康检查接口检查应用状态,应用就绪后再开放给外部访问。

https://docs.spring.io/spring-boot/docs/2.4.3/reference/htmlsingle/#boot-features-application-availability-managing
jimrok
2021-03-17 22:07:25 +08:00
先初始化 bean,再启动 tomcat

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX