服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|编程技术|正则表达式|C/C++|

服务器之家 - 编程语言 - JAVA教程 - Spring Boot中自动化配置的利弊以及解决方法

Spring Boot中自动化配置的利弊以及解决方法

2020-12-08 15:14翟永超 JAVA教程

这篇文章主要给大家介绍了关于Spring Boot中自动化配置的利弊以及解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

本文主要给大家介绍了关于Spring Boot自动化配置的利弊及解决方法的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

Spring Boot中的双刃剑:自动化配置

在之前的文章中,我们通过各种功能性示例体验了Spring Boot的自动化配置给我们所带来的超便利的新开发方式。但是,在一些情况下Spring Boot的自动化配置也会给我们惹来不少的麻烦,比如这些场景:

项目依赖复杂的情况下,由于依赖方的依赖组织不够严格,可能引入了一些实际我们不需要的依赖,从而导致我们的项目满足一些特定的自动化配置。

传统Spring项目转换为Spring Boot项目的过程中,由于不同的组织方式问题,引发自动化配置加载的错误,比如:通过xml手工组织的多数据源配置等。

上面这些原因都会导致不必要的自动化配置加载而导致应用无法启动或触发/health的健康检查不通过等问题。比如,我们在改造传统Spring项目到Spring Boot项目中碰到的一些错误:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
六月 21, 2017 6:23:47 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: 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)
2017-06-21 18:23:47,230 INFO [main] org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer -
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-06-21 18:23:47,237 ERROR [main] org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter -
***************************
APPLICATION FAILED TO START
***************************
Description:
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).

从报错信息中,我们就可以分析出错误原因是触发了数据源的自动化配置,然而当前项目其实并不需要数据源。查其根源是依赖方提供的API依赖中引用了一些多余的依赖触发了该自动化配置的加载。

如何解决

为了解决上面所述的问题,我们可以用两种方法来解决:

  • 通过外部依赖的修改来解决:通过与依赖方沟通,在对方提供的API依赖中去掉不必要的依赖
  • 通过禁用指定的自动化配置来避免加载不必要的自动化配置,下面列举了禁用的方法:

使用了@EnableAutoConfiguration的时候

?
1
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

使用了@SpringBootApplication的时候

?
1
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

使用了@SpringCloudApplication的时候

?
1
2
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringCloudApplication

通过配置文件来设置

?
1
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

总结

好了,大概就这样,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持

原文链接:http://blog.didispace.com/spring-boot-disable-autoconfig/

延伸 · 阅读

精彩推荐
  • JAVA教程servlet实现用户登录小程序

    servlet实现用户登录小程序

    这篇文章主要为大家详细介绍了servlet实现用户登录的小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    sunny19962992020-10-08
  • JAVA教程Java资源缓存 之 LruCache

    Java资源缓存 之 LruCache

    LruCache (此类在android-support-v4的包中提供) 这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近...

    java教程网3432020-06-04
  • JAVA教程Java Http接口加签、验签操作方法

    Java Http接口加签、验签操作方法

    下面小编就为大家带来一篇Java Http接口加签、验签操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    jingxian4672020-07-07
  • JAVA教程Java性能调优概述

    Java性能调优概述

    本文介绍了Java程序性能的主要表现点、衡量程序性能的主要指标、性能调优的层次、基本调优策略和手段等,具有很好的参考价值,下面跟着小编一起来看...

    九朗的码农生活4522020-08-03
  • JAVA教程关于MyBatis10种超好用的写法(收藏)

    关于MyBatis10种超好用的写法(收藏)

    这篇文章主要介绍了关于MyBatis10种超好用的写法(收藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    程序员麦冬5112020-08-03
  • JAVA教程java使用ftp上传文件示例分享

    java使用ftp上传文件示例分享

    这篇文章主要介绍了java使用ftp上传文件示例,需要的朋友可以参考下 ...

    java教程网4682019-11-06
  • JAVA教程struts2中通过json传值解决乱码问题的实现方法

    struts2中通过json传值解决乱码问题的实现方法

    这篇文章主要介绍了struts2中通过json传值解决乱码问题的实现方法,涉及js编码及java解码的相关操作技巧,需要的朋友可以参考下 ...

    liva_zheng5262020-05-23
  • JAVA教程JAVA 数据结构之Queue处理实例代码

    JAVA 数据结构之Queue处理实例代码

    这篇文章主要介绍了JAVA 数据结构之Queue处理实例代码的相关资料,需要的朋友可以参考下...

    Java教程网3532020-08-18