InitializerCallbacks.java
package top.infra.test.containers;
import static lombok.AccessLevel.PRIVATE;
import lombok.NoArgsConstructor;
import org.springframework.boot.test.util.EnvironmentTestUtils;
import org.springframework.context.ConfigurableApplicationContext;
import org.testcontainers.containers.GenericContainer;
import java.util.function.BiFunction;
@NoArgsConstructor(access = PRIVATE)
public final class InitializerCallbacks {
    public static final BiFunction<GenericContainer, ConfigurableApplicationContext, Void> SPRING_DATA_REDIS = (container, applicationContext) -> {
        final String containerIpAddress = container.getContainerIpAddress();
        final int mappedPort = container.getMappedPort(6379);
        // spring-boot 1.5.x
        EnvironmentTestUtils.addEnvironment("testcontainers", applicationContext.getEnvironment(), //
            "spring.redis.host=" + containerIpAddress, //
            "spring.redis.port=" + mappedPort
        );
        // spring-boot 2.0.x
        //TestPropertyValues values = TestPropertyValues.of(
        //    "spring.redis.host=" + redis.getContainerIpAddress(),
        //    "spring.redis.port=" + redis.getMappedPort(6379)
        //);
        //values.applyTo(configurableApplicationContext);
        return null;
    };
}