2017-06-19 24 views
-1

我得到一个春天启动的应用程序,并试图建立在Java的配置定义一个DataSource的bean:错误时创建数据源

@Bean(name = "dsBD") @Primary 
public DataSource dsBD() { 
    return DataSourceBuilder.create() 
    .url("jdbc:mysql://localhost:3306/‌​database?autoReconne‌​ct=true") 
    .username("‌​root") 
    .password("mysql") 
    .driverClassName("com.mysql.jdbc.Drive‌​r") 
    .build(); 
} 

@Bean(name = "jdbcBD") @Autowired 
public JdbcTemplate jdbcBD(@Qualifier("dsBD") DataSource dsBD) { 
    return new JdbcTemplate(dsBD); 
} 

但启动应用程序时,我得到了以下错误:

Caused by: java.lang.IllegalStateException: No supported DataSource type found 
    at org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder.getType(DataSourceBuilder.java:138) ~[spring-boot-autoconfigure-1.5.4.RELEASE.jar:1.5.4.RELEASE] 
    at org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder.build(DataSourceBuilder.java:69) ~[spring-boot-autoconfigure-1.5.4.RELEASE.jar:1.5.4.RELEASE] 
    at com.package.DatabaseConfig.dsBD(DatabaseConfig.java:29) ~[classes/:na] 
    at com.package.DatabaseConfig$$EnhancerBySpringCGLIB$$ac56d75a.CGLIB$dsBD$0(<generated>) ~[classes/:na] 
    at com.package.DatabaseConfig$$EnhancerBySpringCGLIB$$ac56d75a$$FastClassBySpringCGLIB$$159befb3.invoke(<generated>) ~[classes/:na] 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.9.RELEASE.jar:4.3.9.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] 
    at com.package.DatabaseConfig$$EnhancerBySpringCGLIB$$ac56d75a.dsBD(<generated>) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] 
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] 
    ... 46 common frames omitted 
+1

您没有配置数据源,它看起来像。或者你的配置有问题,很难说,因为你没有向我们展示代码和配置。 –

+0

Hi @M。普罗霍罗夫,这对于数据源 ' \t @Bean(NAME = “dsBD”) \t @Primary \t公共数据源dsBD(){ \t \t回DataSourceBuilder.create()URL(“JDBC我的配置代码: mysql:// localhost:3306/database?autoReconnect = true“).username(”r​​oot“) \t \t \t \t .password(”mysql“)。driverClassName(”com.mysql.jdbc.Driver“)。build ); \t} \t @Bean(名称= “jdbcBD”) \t @Autowired \t公共的JdbcTemplate jdbcBD(@Qualifier( “dsBD”)的DataSource dsBD){ \t \t返回新的JdbcTemplate(dsBD); \t} ' –

+0

这很好,但我们可以在问题本身中拥有所有这些吗? –

回答

1

在使用DataSourceBuilder的条款,您需要在类路径中具有以下内容之一:

  1. 公地DBCP
  2. TOMCAT-JDBC
  3. HIKARICP

否则你会得到不支持的类型的IllegalStateException,因为你现在得到的。

+1

谢谢拉扎罗夫。我添加了common-dbcp库并运行。 –