Baza de date H2 în memorie are limitări majore: sintaxa SQL diferă de motoarele de producție, lipsesc tipurile native avansate (cum ar fi JSONB din PostgreSQL) și nu poate simula erorile specifice de concurență. Standardul modern este Testcontainers.
Începând cu Spring Boot 3.1, adnotarea revoluționară @ServiceConnection elimină complet nevoia de a configura manual proprietățile @DynamicPropertySource. Spring Boot detectează containerul Docker pornit și injectează automat URL-ul JDBC, username-ul și parola în contextul aplicației.
Exemplu: Testcontainers cu PostgreSQL real și @ServiceConnection
package ro.dexblog.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
@SpringBootTest
class RealDatabaseIntegrationTest {
@Container
@ServiceConnection // Configurează automat DataSource-ul Spring Boot cu conexiunea containerului!
static PostgreSQLContainer> postgres = new PostgreSQLContainer<>("postgres:16-alpine");
@Test
void shouldRunWithRealPostgresContainer() {
// Testul rulează împotriva unei baze de date PostgreSQL reale în Docker!
}
}
Întrebări & Exemple de Cod:
Testcontainers și @ServiceConnection în Spring Boot 3Ai o nelămurire despre utilizarea comenzii
Testcontainers și @ServiceConnection în Spring Boot 3sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.