StackOverflowError in an attempt to create bin javax.sql.DataSource



  • Trying to use JDBCTemplate. Full project code https://github.com/SkillsUpCourses/SpringHomeWork/blob/JDBCTemplate%2BMongoDB/SpringJavaConfig/src/main/java/com/stoxa/springjavaconfig/DAO/ContactJDBCDao.java

    I'm building beans.

    @Bean
    DataSource dataSource() throws FileNotFoundException, IOException {
        DriverManagerDataSource dataSource =  new DriverManagerDataSource();
        /**Properties property = new Properties();
        FileInputStream propertyFile = new FileInputStream("src/main/resources/mydb.properties");
        property.load(propertyFile);*/
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
        dataSource.setUsername("Ksu");
        dataSource.setPassword("KurochkaRyaba13");
       // dataSource.setConnectionProperties(property);
        return dataSource();
    }
    

    @Bean
    JdbcTemplate jdbcTemplate() throws IOException {
    return new JdbcTemplate((javax.sql.DataSource) dataSource());
    }

    In an attempt to comppillate, the JDBC Driver's connection is blocked.
    At first, it's a long time.

     Dec 17, 2015 5:02:23 AM         org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
    INFO: Loaded JDBC driver: com.mysql.jdbc.Driver

    Then there's a mistake.

    WARNING: Exception encountered during context initialization - cancelling refresh attempt
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in com.stoxa.springjavaconfig.Config.AppConfig: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.activation.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.StackOverflowError
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
    at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
    at com.stoxa.springjavaconfig.TestClass.TestClass.main(TestClass.java:24)
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.activation.DataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.StackOverflowError
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
    ... 13 more
    Caused by: java.lang.StackOverflowError
    at java.security.AccessController.doPrivileged(Native Method)
    at org.apache.commons.logging.LogFactory.getContextClassLoaderInternal(LogFactory.java:808)
    at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:419)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:655)
    at org.springframework.jdbc.datasource.AbstractDataSource.<init>(AbstractDataSource.java:42)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.<init>(AbstractDriverBasedDataSource.java:34)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.<init>(DriverManagerDataSource.java:71)
    at com.stoxa.springjavaconfig.Config.AppConfig.dataSource(AppConfig.java:89)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217.CGLIB$dataSource$5(<generated>)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217$$FastClassBySpringCGLIB$$6405c777.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:318)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217.dataSource(<generated>)
    at com.stoxa.springjavaconfig.Config.AppConfig.dataSource(AppConfig.java:95)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217.CGLIB$dataSource$5(<generated>)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217$$FastClassBySpringCGLIB$$6405c777.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:318)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217.dataSource(<generated>)
    at com.stoxa.springjavaconfig.Config.AppConfig.dataSource(AppConfig.java:95)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217.CGLIB$dataSource$5(<generated>)
    at com.stoxa.springjavaconfig.Config.AppConfig$$EnhancerBySpringCGLIB$$943c5217$$FastClassBySpringCGLIB$$6405c777.invoke(<generated>)



  • You have an endless class.

    @Bean
    DataSource dataSource() throws FileNotFoundException, IOException {
    

    ...

    return dataSource();
    

    }

    Maybe it's not a method to return. dataSource



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2