spring boot启动报错:
1. 错误
springboot项目启动时,如果没有配置数据库配置,启动时会抛出如下异常。
2018-03-05 10:29:23.361 INFO 8700 --- [ main] c.p.i.agent.AgentSpringApplication : Starting AgentSpringApplication on SHYK-P-546QQF2 with PID 8700 (E:\java\workspace\ic_monitor\ic_agent\target\classes started by xiuyue.pei in E:\java\workspace\ic_monitor\ic_agent)
2018-03-05 10:29:23.363 INFO 8700 --- [ main] c.p.i.agent.AgentSpringApplication : No active profile set, falling back to default profiles: default
2018-03-05 10:29:23.425 INFO 8700 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5b76d3e1: startup date [Mon Mar 05 10:29:23 CST 2018]; root of context hierarchy
2018-03-05 10:29:24.503 WARN 8700 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
2018-03-05 10:29:24.513 INFO 8700 --- [ main] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-03-05 10:29:24.687 ERROR 8700 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration required a bean of type 'javax.sql.DataSource' that could not be found.
- Bean method 'dataSource' not loaded because @ConditionalOnProperty (spring.datasource.jndi-name) did not find property 'jndi-name'
- Bean method 'dataSource' not loaded because @ConditionalOnBean (types: org.springframework.boot.jta.XADataSourceWrapper; SearchStrategy: all) did not find any beans
Action:
Consider revisiting the conditions above or defining a bean of type 'javax.sql.DataSource' in your configuration.
2. 原因
@SpringBootApplication = (默认属性)@Configuration + @EnableAutoConfiguration + @ComponentScan。springboot会自动注入数据源,而你却没有配,所以他就抛出该异常。
3. 如何不配
如果你只是简单的想建个项目,并不需要数据库支持,那么你可以让他不去注入数据源。
// 一般你启动springboot项目,都会写一个有@SpringBootApplication注解的类
// 你在这个注解中添加exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class}
// 即可无数据库运行
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})