【錯誤解決】springBoot啟動報錯:Error starting ApplicationContext. To display the auto-configuration report re-
【錯誤解決】springBoot啟動報錯:Error starting ApplicationContext. To display the auto-configuration report re-run your application with ‘debug’ enabled.
錯誤資訊:
Error starting ApplicationContext. To display the auto-configuration report re-run your application with ‘debug’ enabled.
Cannot determine embedded database driver class for database type NONE
Action:
If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
網上搜索一大堆解決方案是:
springboot啟動時會自動注入資料來源和配置jpa
在@SpringBootApplication中排除其注入
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
首先應該搞明白上面這句話是什麼意思;啟動的時候會自動注入資料來源;
因為很多新手都是直接copy別人的配置檔案,
在配置檔案中是這麼寫的
很多人在配置檔案application.properties是這麼寫的:
spring.druid.url=jdbc:mysql://127.0.0.1:3306/xxx?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
spring.druid.username=root
spring.druid.password=xxxxx
spring.druid.maxActive=20
spring.druid.minIdle=3
spring.druid.maxWait=10000
spring.druid.validationQuery=SELECT ‘x’
spring.druid.timeBetweenEvictionRunsMillis=60000
spring.druid.minEvictableIdleTimeMillis=300000
spring.druid.borrowConnectionTimeout=30000
需要加上下面程式碼:
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.google.common.collect.Lists;
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix="spring.druid")
@Bean(initMethod="init",destroyMethod="close")
public DataSource dataSource(Filter statFilter) throws SQLException{
DruidDataSource dataSource = new DruidDataSource();
dataSource.setProxyFilters(Lists.newArrayList(statFilter()));
return dataSource;
}
@Bean
public Filter statFilter(){
StatFilter filter = new StatFilter();
filter.setSlowSqlMillis(5000);
filter.setLogSlowSql(true);
filter.setMergeSql(true);
return filter;
}
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}
}