使用org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder的方法丢失

lpkej:
Caused by: java.lang.NoSuchMethodError: 
 org.springframework.util.MultiValueMap.addAll(Ljava/lang/Object;Ljava/util/List;)V

构建数据源时出现此错误:

return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .setName("table_name")
                .setScriptEncoding("UTF-8")
                .addScript("classpath:sql_schema_path")
                .setDataSourceFactory(embeddedDataSourceFactory) // @bean to pass Factory values
                .build();

我想这MultiValuedMap.addAll是在springframework尝试构建build时在后台使用的EmbeddedDatabase不知道为什么我会收到此错误,有什么建议吗?

lpkej:

好的,所以在我的情况下,我正在使用<springversion>4.2.5.RELEASE</springversion>Maven存储库中的内容,它清楚地表明如果我使用的话,spring-boot-jdbc-2.1.5我需要至少使用springframework版本5.1.7.RELEASE mvn_link_here我可能想念它,我很糟糕。

如果某人仅使用spring,那么您应该使用SimpleDriverDataSource其中的一部分,org.springframework.jdbc.datasource并且可以使用它来指定url,驱动程序,用户名和密码。

那里没有太多示例,所以我实现它的方式和工作方式是这样的:

@Configuration
@PropertySource("classpath:properties.file")
public class DatabaseServiceImplTestConfig {

    @Autowired
    private Environment env;

    @Bean
    public DataSourceFactory embeddedDataSourceFactory() {
        return new DataSourceFactory() {
            @Override
            public ConnectionProperties getConnectionProperties() {
                return new ConnectionProperties() {

                    @Override
                    public void setUsername(String username) {}

                    @Override
                    public void setPassword(String password) {}

                    @Override
                    public void setUrl(String url) {}

                    @Override
                    public void setDriverClass(Class<? extends Driver> driverClass) {}

                };
            }

            @Override
            public DataSource getDataSource() {
                SimpleDriverDataSource sds = new SimpleDriverDataSource();
                sds.setDriverClass(com.mysql.jdbc.Driver.class); // <- try to return Driver object too (using setDriver)
                sds.setUrl(env.getProperty("jdbc.connection.url"));
                sds.setUsername(env.getProperty("jdbc.connection.username"));
                sds.setPassword(env.getProperty("jdbc.connection.password"));
                return sds;
            }
        };
    }

    @Bean
    public DataSource embeddedDataSource(DataSourceFactory embeddedDataSourceFactory) {

        return new EmbeddedDatabaseBuilder()
                .setType(EmbeddedDatabaseType.H2)
                .setName("table_name_here")
                .setScriptEncoding("UTF-8")
                .addScript("classpath:path/to/your/shema.sql")
                .setDataSourceFactory(embeddedDataSourceFactory)  // <- call the bean here
                .build();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ClassNotFoundException:org.springframework.jdbc.datasource.DriverManagerDataSource

使用org.springframework.jdbc.datasource.init.ScriptUtils在UNIX中执行.sql文件

org.postgresql.Driver的bean类[org.springframework.jdbc.datasource.DriverManagerDataSource]的无效属性'driverClass'

数据源问题:java.lang.ClassNotFoundException:org.springframework.jdbc.datasource.DriverManagerDataSource

线程“主”中的异常java.lang.ClassCastException:无法强制转换org.springframework.jdbc.datasource.DriverManagerDataSource

在类路径资源[org / springframework / boot / autoconfigure / jdbc / DataSourceConfiguration $ H中定义的BeanDefinition中定义的bean'dataSource'

org.springframework.jdbc.CannotGetJdbcConnectionException

org.springframework.jdbc.support.MetaDataAccessException:Spring Boot中的JDBC DatabaseMetaData方法

奇怪的org.springframework.jdbc.BadSqlGrammarException

JdbcBatchItemWriterBuilder 与 org.springframework.jdbc.core.jdbcTemplate.batchUpdate

org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback; 错误的SQL语法

如何使用org.springframework.jdbc.object实现可重用的ddl语句?

org.springframework.boot.web.embedded.tomcat.ConnectorStartFailedException上IDEA终极2019.3

等价于非Boot Spring项目的org.springframework.boot.context.embedded.FilterRegistrationBean吗?

org.sqlite.JDBC无法转换为javax.sql.DataSource

我可以动态更改org.apache.tomcat.jdbc.pool.DataSource的maxActive属性吗?

Caused by: org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID,

现场的JdbcTemplate需要类型的bean的org.springframework.jdbc.core.JdbcTemplate'不能被发现

RuntimeException的回滚:org.springframework.jdbc.BadSqlGrammarException:PreparedStatementCallback; 错误的SQL语法[-Spring Batch问题

java.lang.IllegalStateException:org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration上的错误处理条件

春季测试:为org.springframework.test.context.jdbc.Sql配置数据源

没有类型为'org.springframework.jdbc.core.JdbcTemplate'的合格bean错误

错误:org.springframework.jdbc.BadSqlGrammarException:StatementCallback; 错误的SQL语法Java Spring MVC

org.springframework.jdbc.CannotGetJdbcConnectionException,嵌套的异常是java.sql.SQLException

没有类型为org.springframework.jdbc.core.JdbcTemplate的合格bean

异常:org.springframework.web.HttpRequestMethodNotSupportedException使用Spring post方法时

使用jdbc模板自动装配dataSource问题进行Spring Boot自动配置

遇到问题“在春季启动应用程序中找不到类[org.springframework.data.jdbc.repository.config.JdbcConfiguration]

..中的构造函数的参数0需要找不到类型为org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate的bean