Spring DriverManagerDataSource-在驱动程序加载期间堆栈溢出

时间:2016-12-07 16:07:10

标签: java spring spring-mvc datasource spring-bean

我将数据源定义如下:

@Bean
public DataSource dataSource(){
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.h2.Driver");
    dataSource.setUrl("jdbc:h2:tcp://localhost/~/test");
    dataSource.setUsername("sa");
    dataSource.setPassword("");
    return dataSource();
}

在春天的引导过程中,控制台正在投入大量资金:

Dez 07, 2016 5:00:53 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: org.h2.Driver

过了一会儿我才得到

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class sample.config.AppConfig: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource sample.config.AppConfig.dataSource()] threw exception; nested exception is java.lang.StackOverflowError

我从一些书中复制过的所有样本,这里可能出现什么问题?

问题是,我已将它放入Web应用程序配置类?

2 个答案:

答案 0 :(得分:4)

在您的dataSource() bean创建方法中,将return语句更改为:

return dataSource;

您再次调用该方法,这是创建异常。

答案 1 :(得分:0)

错误在于你是递归调用自己的方法,最后它将通过stackoverflower错误。