Springboot 在启动时:出现异常如下
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.4.RELEASE)
2018-03-15 18:10:08.380 INFO 12168 --- [ main] springboot.Start : Starting Start on
。。。
2018-03-15 18:10:12.964 WARN 12168 --- [ost-startStop-1] o.a.c.loader.WebappClassLoaderBase : The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
2018-03-15 18:10:12.987 INFO 12168 --- [ main] utoConfigurationReportLoggingInitializer :
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
原因分析:
- 项目依赖复杂的情况下,由于依赖方的依赖组织不够严格,可能引入了一些实际我们不需要的依赖,从而导致我们的项目满足一些特定的自动化配置。
- 传统Spring项目转换为Spring Boot项目的过程中,由于不同的组织方式问题,引发自动化配置加载的错误,比如:通过xml手工组织的多数据源配置等。
- 上面这些原因都会导致不必要的自动化配置加载而导致应用无法启动或触发/health的健康检查不通过等问题。
解决:
1. 当注解为 @EnableAutoConfiguration:
修改为: @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
2.当注解为 @SpringBootApplication:
修改为: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
3.当注解为 @SpringCloudApplication
:
修改为: @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringCloudApplication
4.通过配置文件来设置:(
通过外部依赖的修改来解决:通过与依赖方沟通,在对方提供的API依赖中去掉不必要的依赖)
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
参考博客:http://blog.didispace.com http://blog.csdn.net/dyc87112/article/details/73739535