# 출하 파일 안의 같은 이름, 다른 타입 — 네임스페이스와 함께
37:    hikari:
      connection-timeout: ${APP_DATASOURCE_CONNECTION_TIMEOUT:5000}
322:  tomcat:
    connection-timeout: ${APP_SERVER_TOMCAT_CONNECTION_TIMEOUT:20s}

# 앞쪽이 바인딩되는 세터
  public long getConnectionTimeout();
  public void setConnectionTimeout(long);

# 같은 키를 읽는 시작 검증기는 다른 규칙으로 읽는다
16:public class HikariPoolConstraintValidator implements SmartInitializingSingleton {
18:  static final String CONNECTION_TIMEOUT_KEY = "spring.datasource.hikari.connection-timeout";
26:  static final String CONNECTION_TIMEOUT_ENV_KEY = "APP_DATASOURCE_CONNECTION_TIMEOUT";
8:import org.springframework.boot.convert.DurationStyle;
125:      return DurationStyle.detectAndParse(raw.trim(), ChronoUnit.MILLIS).toMillis();

# 지금은 정적 가드가 이 형식을 막는다
  private static final List<String> PLAIN_MILLISECOND_KEYS =
      List.of(
          "spring.datasource.hikari.connection-timeout",
          "spring.datasource.hikari.validation-timeout",
          "spring.datasource.hikari.idle-timeout",
          "spring.datasource.hikari.keepalive-time",
          "spring.datasource.hikari.max-lifetime",
          "spring.datasource.hikari.leak-detection-threshold",
          "spring.datasource.hikari.initialization-fail-timeout");
  (그 가드가 한 번 헛짚었던 자리)
   * <p>An earlier version matched the key's leaf name with a regex and reported {@code
   * server.tomcat.connection-timeout: 20s} — a genuine {@code Duration} — as a defect. Flattening
   * through the real loader means the check is about the property this list names and not about
