gpt4 book ai didi

java - 缺少使用 org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder 的方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:42 25 4
gpt4 key购买 nike

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尝试构建EmbeddedDatabase时在幕后使用的。不知道为什么我会收到此错误,有什么建议吗?

最佳答案

好吧,就我而言,我使用 <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();
}

关于java - 缺少使用 org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56646743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com