
Spring 新人,请教下这个问题,搜索相关问题只搜索到 dubbo 延迟暴露 相关的,但是这个项目不是 dubbo 的,就是一般的 Spring Boot 应用。
问题是,在 Spring 启动阶段,会有大概 10s 的端口已监听但是访问 500 的情况。
具体是:
请教下大家,这个问题应该如何解决呢,正常的理想情况是,在整个应用启动完整之后,才监听端口,保证监听即可用。
1 huifer Mar 17, 2021 Bean 实例化顺序 |
2 chendy Mar 17, 2021 你确定是因为未启动好报的 500 么?应用的报错是什么? 启动 20s 多少慢了点吧…… |
3 telnetning OP @chendy 应该是的,中间报错的请求,是 getBean 的结果为 null |
4 telnetning OP @huifer 多谢,我了解下。是需要让对应的 Bean 在 Web 容器之前加载完成吗? |
5 Kasumi20 Mar 17, 2021 Spring 监听端口吗?是 Servlet 容器在监听吧。。。 |
6 huifer Mar 17, 2021 @telnetning 不如放出代码在看看,getBean 为 null 就说明 bean 没有加载 |
7 scxiazi Mar 17, 2021 你倒是把报错信息放出来 |
8 telnetning OP @Kasumi20 嗯嗯,是的 |
9 telnetning OP @scxiazi 公司网络限制,贴不出来。。。 |
10 telnetning OP @huifer 公司网络限制,贴不出来。。。 |
11 yRebelHero Mar 17, 2021 另外的端口监听吗?试试在 Application 这个类 implements CommandLineRunner,再重写 run 方法新建一个线程来监听。我之前也遇到过类似的情况,就是需要监听另外的端口,但是这个端口始终没法监听到,具体报没报错忘了,但是我是这么解决的。 |
12 simple2025 Mar 17, 2021 java 启动这么慢的吗? |
13 telnetning OP @chenqh 我一直以为 Spring 应用就是这么慢来着。。。 |
14 simple2025 Mar 17, 2021 @telnetning 我用 py,启动不到 1s 钟的呀,可能是我用轻型框架的原因 |
15 qwerthhusn Mar 17, 2021 报 500 看日志堆栈啊 |
16 arvinsilm Mar 17, 2021 加个 filter 之类的东西,系统没启动完成返回统一错误信息 |
18 simple2025 Mar 17, 2021 @qinxi 原来是这个原因的吗,嗯嗯,应该是这个原因吧 |
19 bianjp PRO 先使用 Spring Boot Actuator 的健康检查接口检查应用状态,应用就绪后再开放给外部访问。 https://docs.spring.io/spring-boot/docs/2.4.3/reference/htmlsingle/#boot-features-application-availability-managing |
20 jimrok Mar 17, 2021 先初始化 bean,再启动 tomcat |
21 telnetning OP @chenqh Spring 启动肯定比 py 应用启动慢多了的 |
22 telnetning OP @bianjp 是指让网关或者负载均衡器在开放应用给外部之前先检查接口应用状态? |