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
♪