2017-06-19 23 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庫並運行。 –