在springboot下的@ConfigurationProperties自动属性注入的时候,由于spring框架自动注入bean属性数据,导致会优先设置setMaxEvictableIdleTimeMillis,此时还未进行 setMinEvictableIdleTimeMillis属性的设置,但是setMinEvictableIdleTimeMillis的默认值会成为setMaxEvictableIdleTimeMillis判断的值。导致检查失败。
原提问者GitHub用户Plen-wang
在Spring Boot的自动配置中,确实存在一些属性绑定顺序的问题。这可能导致在设置连接池参数时出现优先设置setMaxEvictableIdleTimeMillis
,而还未设置setMinEvictableIdleTimeMillis
的情况。
如果您希望优化setMinEvictableIdleTimeMillis
属性的设置,可以考虑以下方案:
1. 通过编码方式设置参数:在您的代码中手动设置连接池的属性,确保先设置setMinEvictableIdleTimeMillis
再设置setMaxEvictableIdleTimeMillis
。这样可以避免默认值对判断产生影响。
2. 在配置文件中显式设置属性:可以在application.properties
或application.yml
文件中显式地设置连接池的属性,包括min-evictable-idle-time-millis
和max-evictable-idle-time-millis
。这样可以确保属性按照期望的顺序进行绑定。
3. 使用新版本:根据回答中提到的,新版本已经修复了这个问题。所以您可以尝试升级到最新版本的Spring Boot和连接池相关的依赖库,看看是否解决了属性绑定顺序的问题。
请注意,具体的实施方法可能会因您使用的连接池库(如HikariCP、Tomcat JDBC、Druid等)而有所不同。您可以根据具体的库文档或源码来查找适合您的解决方案。
在Spring Boot的自动配置中,可以通过配置文件或者编码方式来设置连接池的各种参数,包括setMinEvictableIdleTimeMillis(连接空闲时间超时时间)等参数。如果您希望优化setMinEvictableIdleTimeMillis参数的设置,可以考虑以下几个方面:
设置合理的连接池参数。setMinEvictableIdleTimeMillis参数表示连接池中连接的最小空闲时间,超过这个时间的连接将被回收。如果连接池中的连接数量比较少,可以适当增加setMinEvictableIdleTimeMillis参数的值,以减少过于频繁的连接回收操作。如果连接池中的连接数量比较多,可以适当减小setMinEvictableIdleTimeMillis参数的值,以及时回收不再使用的连接。
使用合适的连接池实现。Spring Boot支持多种连接池实现,包括HikariCP、Tomcat JDBC、Druid等。不同的连接池实现可能在连接管理、性能、稳定性等方面有所不同,因此可以根据实际需求选择合适的连接池实现,并设置相应的连接池参数。
监控连接池使用情况。连接池的使用情况对系统的性能和稳定性有很大影响,因此可以使用监控工具来监控连接池使用情况,并及时调整连接池参数。Spring Boot提供了多种监控工具,包括Spring Boot Actuator、Druid监控等,可以方便地监控连接池的使用情况和性能指标。
Spring Boot 在绑定属性的时候没有按照配置文件内配置项的顺序,貌似是按ASCII码的顺序进行绑定的,建议maxEvictableIdleTimeMillis先自己通过Environment来配置或者不要小于Durid DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS = 1000L * 60L * 30L。
新版本已修复。
原回答者GitHub用户lihengming
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。