fix: answerReconcileProperties @Bean 拆到无依赖独立配置类——Boot 2.6+ 默认禁止一切循环引用,字段注入不豁免(160 复验仍拒启)
build / build-push (push) Successful in 50s
build / build-push (push) Successful in 50s
已用 MqDisabledContextIT(@SpringBootTest 全上下文)验证装配通过:Tomcat 起来+健康检查 UP。
This commit is contained in:
@@ -4,8 +4,6 @@ import com.yunhai.formcenter.service.AnswerReconcileService;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
|
||||
@@ -27,20 +25,15 @@ import org.springframework.scheduling.annotation.Scheduled;
|
||||
public class AnswerReconcileConfiguration {
|
||||
|
||||
/**
|
||||
* 字段注入而非构造器注入:answerReconcileProperties 这个 @Bean 定义在本类里,
|
||||
* 构造器注入会形成 Configuration→Service→DispatchClient→Properties→Configuration
|
||||
* 的构造环(容器直接拒绝启动,2026-10-22 160 部署实测)。字段注入把对 Service 的
|
||||
* 依赖推迟到属性填充阶段,环自然解开;@Scheduled 回调运行时该字段必已就绪。
|
||||
* 字段注入而非构造器注入:本类与 Service/DispatchClient/Properties 之间曾有构造环
|
||||
* (Boot 2.6+ 默认禁环拒启,2026-10-22 160 部署实测)。环的物理解法是把
|
||||
* answerReconcileProperties @Bean 拆到无依赖的 {@link AnswerReconcilePropertiesConfiguration};
|
||||
* 字段注入保留——它把对 Service 的依赖推迟到属性填充阶段,让本类可以先于 Service 完成
|
||||
* 自身装配。@Scheduled 回调运行时该字段必已就绪。
|
||||
*/
|
||||
@org.springframework.beans.factory.annotation.Autowired
|
||||
private AnswerReconcileService reconcileService;
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "fc.answer.reconcile")
|
||||
public AnswerReconcileProperties answerReconcileProperties() {
|
||||
return new AnswerReconcileProperties();
|
||||
}
|
||||
|
||||
/** 清单物化与派发共用一个扫描闹钟:每 tick 最多推进一条任务(这就是任务级单并发) */
|
||||
@Scheduled(fixedDelayString = "${fc.answer.reconcile.scan-interval-ms:15000}",
|
||||
initialDelayString = "${fc.answer.reconcile.scan-initial-delay-ms:45000}")
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
package com.yunhai.formcenter.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* 对账运行参数的注册位(TASK_3;2026-10-22 从 {@link AnswerReconcileConfiguration} 拆出)。
|
||||
*
|
||||
* <p>原 @Bean 挂在 {@link AnswerReconcileConfiguration} 里,而那个类又要注入
|
||||
* {@code AnswerReconcileService}——Service 与 {@code AnswerReconcileDispatchClient}
|
||||
* 都要注入本 Properties,于是形成 Configuration→Service→DispatchClient→Configuration
|
||||
* 构造环。Spring Boot 2.6+ 默认禁止一切循环引用(字段注入也不豁免),160 部署实测
|
||||
* 直接拒绝启动。本类无任何依赖,环从物理上消失;bean 名与类型都不变,
|
||||
* 所有注入点零改动。</p>
|
||||
*/
|
||||
@Configuration
|
||||
public class AnswerReconcilePropertiesConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConfigurationProperties(prefix = "fc.answer.reconcile")
|
||||
public AnswerReconcileConfiguration.AnswerReconcileProperties answerReconcileProperties() {
|
||||
return new AnswerReconcileConfiguration.AnswerReconcileProperties();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user