程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Data JDBC Testcontainers 数据源大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Data JDBC TESTContainers 数据源?

开发过程中遇到Spring Data JDBC TESTContainers 数据源的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Data JDBC TESTContainers 数据源的解决方法建议,希望对你解决Spring Data JDBC TESTContainers 数据源有所启发或帮助;

使用 spring boot + spring data jdbc,我必须自己连接 Datasource bean。像这样:

@Bean
    public Datasource datasource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl(this.environment.getrequiredProperty("url"));
        hikariConfig.setUsername("user");
        hikariConfig.setDriverClassname("org.POSTGResql.Driver");
        hikariConfig.setpassword("password");
        return new HikarIDatasource(hikariConfig);
    }

当我想在测试中使用 TESTContainers 时,我还必须声明一个 Datasource bean:

@Bean
        @PriMary
        Datasource testDatasource() {

            if (POSTGREsql_CONTAINER == null) {
                POSTGResqlContainer<?> container = new POSTGResqlContainer<>(DockerImagename.parse("POSTGRes").withTag("9.6.12"));
                container.withInitScript("scheR_354_11845@a.sql");
                container.start();
                POSTGREsql_CONTAINER = container;
            }
            PGSimpleDatasource datasource = new PGSimpleDatasource();
            datasource.setUrl(POSTGREsql_CONTAINER.getJdbcUrl());
            datasource.setUser(POSTGREsql_CONTAINER.getUsername());
            datasource.setpassword(POSTGREsql_CONTAINER.getpassword());

            return datasource;
        }

将我的测试与 SpringBoottest 一起使用,我必须ComponentScan 几乎所有的包,因为我不想模拟所有其他 bean。
所以我的问题是:
我可以以某种方式排除主要的 Datasource 仅用于测试用例吗?
(我目前的解决方法是将测试 Datasource 定义为 PriMary
但尽管如此,我的 Datasource 中有两个 Context bean,即使我只需要一个。

解决方法

https://github.com/wearearima/spring-data-jdbc-TESTContainers 处的示例似乎表明根本不需要定义自己的数据源。

参见https://github.com/wearearima/spring-data-jdbc-TESTContainers/blob/master/src/test/java/eu/arima/springdatajdbcTESTContainers/AccountRepositoryTest.java#L94如何将 TESTContainers 托管数据库的属性传递给 Spring Boot:

 @DynamicPropertysource
    static void POSTGResqlProperties(DynamicPropertyRegistry registry) {
        registry.add("spring.datasource.url",POSTGResqlContainer::getJdbcUrl);
        registry.add("spring.datasource.username",POSTGResqlContainer::getUserName);
        registry.add("spring.datasource.password",POSTGResqlContainer::getpassword);
    }

大佬总结

以上是大佬教程为你收集整理的Spring Data JDBC Testcontainers 数据源全部内容,希望文章能够帮你解决Spring Data JDBC Testcontainers 数据源所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。