Corrige deux regressions de demarrage de la montee Spring Boot 3.5

- ArcJpaEntity.type : columnDefinition VARCHAR(16) DEFAULT remplace par
  length=16 + @ColumnDefault. Hibernate 6.6 recopiait la chaine brute dans son
  ALTER SET DATA TYPE de migration (DDL invalide pour PostgreSQL, retente
  a chaque demarrage).
- MinioConfig : la verification du bucket construisait le client via la
  methode @Bean proxifiee depuis @PostConstruct, interdit par Spring 6.2
  (Requested bean is currently in creation), le check ne tournait plus.
  Fabrique privee directe partagee par le bean et la verification.

Verifie : 507 tests verts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 16:09:12 +02:00
parent 7dec288829
commit 0303786aef
2 changed files with 17 additions and 2 deletions

View File

@@ -3,6 +3,7 @@ package com.loremind.infrastructure.persistence.entity;
import com.loremind.domain.campaigncontext.ArcType;
import com.loremind.infrastructure.persistence.converter.StringListJsonConverter;
import jakarta.persistence.*;
import org.hibernate.annotations.ColumnDefault;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -42,8 +43,12 @@ public class ArcJpaEntity {
* Type structurel de l'arc (LINEAR par défaut).
* Stocké en STRING pour rester lisible en DB et résistant aux refactos d'ordre.
*/
// length + @ColumnDefault (PAS columnDefinition brut) : Hibernate 6.6 recopie
// columnDefinition tel quel dans son ALTER ... SET DATA TYPE de migration, et
// PostgreSQL refuse DEFAULT à cet endroit (erreur à chaque démarrage).
@Enumerated(EnumType.STRING)
@Column(nullable = false, columnDefinition = "VARCHAR(16) DEFAULT 'LINEAR'")
@Column(nullable = false, length = 16)
@ColumnDefault("'LINEAR'")
@Builder.Default
private ArcType type = ArcType.LINEAR;

View File

@@ -32,6 +32,11 @@ public class MinioConfig {
@Bean
public MinioClient minioClient() {
return buildClient();
}
/** Fabrique directe (sans proxy Spring) — voir ensureBucketExists. */
private MinioClient buildClient() {
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
@@ -42,11 +47,16 @@ public class MinioConfig {
* Garantit l'existence du bucket au demarrage. Si MinIO n'est pas joignable,
* on loggue juste l'erreur sans planter l'application : le developpeur
* recevra une erreur claire au premier upload plutot qu'au boot.
* <p>
* NB : on construit un client LOCAL au lieu d'appeler {@code minioClient()} —
* depuis Spring 6.2, appeler une methode @Bean proxifiee pendant le
* @PostConstruct de sa propre @Configuration leve "Requested bean is
* currently in creation" et la verification ne tournait plus jamais.
*/
@PostConstruct
public void ensureBucketExists() {
try {
MinioClient client = minioClient();
MinioClient client = buildClient();
boolean exists = client.bucketExists(BucketExistsArgs.builder().bucket(bucket).build());
if (!exists) {
client.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());