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
。不知道为什么我会收到此错误,有什么建议吗?
好的,所以在我的情况下,我正在使用<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] 删除。
我来说两句