Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Boot - Error creating bean with name 'dataSource' defined in class path resource

I have Spring Boot web application. It's centered around RESTful approach. All configuration seems in place but for some reason MainController fails to handle request. It results in 404 error. How to fix it?

@Controller public class MainController {      @Autowired     ParserService parserService;      @RequestMapping(value="/", method= RequestMethod.GET)     public @ResponseBody String displayStartPage(){         return "{hello}";     } } 

Application

@Configuration @ComponentScan(basePackages = "") @EnableAutoConfiguration public class Application extends SpringBootServletInitializer{         public static void main(final String[] args) {             SpringApplication.run(Application.class, args);         }          @Override         protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {             return application.sources(Application.class);         } } 

ParserController

@RestController public class ParserController {      @Autowired     private ParserService parserService;      @Autowired     private RecordDao recordDao;   private static final Logger LOG = Logger.getLogger(ParserController.class);      @RequestMapping(value="/upload", method= RequestMethod.POST)     public @ResponseBody String fileUploadPage(    } } 

UPDATE

Seems like MySQL cannot be initialized by Spring....

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Injection of autowired dependencies failed;   nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource;   nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Instantiation of bean failed;   nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception;   nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. 

UPDATE2

application.properties

    # Database      spring.datasource.driverClassName = com.mysql.jdbc.Driver     spring.datasource.url = jdbc:mysql://localhost:3306/logparser     spring.datasource.username = root     spring.datasource.password = root          spring.jpa.database = MYSQL     spring.jpa.show-sql = true          # Hibernate     hibernate.dialect: org.hibernate.dialect.MySQL5Dialect     hibernate.show_sql: true     hibernate.hbm2ddl.auto: update     entitymanager.packagesToScan: / 

UPDATE4

Seems lite controllers not responding eventhough @RequestMapping are set. Why might it be?

PS. It occurs when I run Maven's lifecycle test. When running in degub mode in IntelliJ there is no error outputted.

UPDATE5

Also I use this DAO as explained in tutorial....

public interface RecordDao extends CrudRepository<Record, Long> { } 

http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/

UPDATE6

I did changed my application properties. And tried every single combination but it refuses to work. ;(

Maven output:

-------------------------------------------------------  T E S T S ------------------------------------------------------- Running IntegrationTest Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 2.365 sec <<< FAILURE! - in IntegrationTest saveParsedRecordsToDatabase(IntegrationTest)  Time elapsed: 2.01 sec  <<< ERROR! java.lang.IllegalStateException: Failed to load ApplicationContext     at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)     at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101)     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)     at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:331)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:213)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:290)     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:292)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:233)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:87)     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)     at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)     at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)     at org.junit.runners.ParentRunner.run(ParentRunner.java:309)     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:176)     at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:264)     at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:153)     at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)     at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)     at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)     at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class]: Instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. 
like image 363
J.Olufsen Avatar asked Jan 20 '15 09:01

J.Olufsen


1 Answers

Looks like the initial problem is with the auto-config.

If you don't need the datasource, simply remove it from the auto-config process:

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) 
like image 78
Jason Warner Avatar answered Sep 28 '22 17:09

Jason Warner