当前位置: 首页 > 知识库问答 >
问题:

如何扩展Spring Boot的DataSourceAutoConfiguration

於宏大
2023-03-14

我希望能够利用Spring Boot datasource自动配置。但是,它并不支持我使用的所有特性,特别是LogValidationErrors

spring:
  datasource:
    driverClassName: oracle.jdbc.OracleDriver
    url: jdbc:jtds:sqlserver://111.11.11.11/DataBaseName
    username: someuser
    password: somepass
    testOnBorrow: true
    testWhileIdle: true
    validationQuery: select /* validationQuery */ 1 from dual
    minEvictableIdleTimeMillis: 1000    
    validationInterval: 30000
    logValidationErrors: true
    maxAge: 1800000 # //30 Minute idle age
    removeAbondoned: true

有关logvalidationerrors等的更多信息,请参见:https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html

共有1个答案

燕实
2023-03-14

我使用BeanPostProcessor解决了这个问题,类似于Dave Syer的建议:

@Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    if (bean instanceof DataSource) {
        DataSource ds = (DataSource) bean;
        ds.setLogValidationErrors(true);
        ds.setRemoveAbandoned(true);
        ds.setMaxAge(1800000);
    }
    return bean;
}

我也可能会提交一个PR来获得添加到Spring Boot本身的属性。

 类似资料:
  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte

  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte

  • 问题内容: 我正在尝试扩展Python,以用于越野比赛的结果。我想从格式为string的对象构造一个对象。我可以使用工厂设计模式和注释来完成此操作。我将如何通过覆盖和/或完成相同的任务? 使用下面的代码,构造一个对象会引发TypeError。请注意,未调用,因为未打印。 这是错误: 如果将代码从移至,则会得到以下结果。注意这次,输出显示我的函数被调用了。 问题答案: 显然,对象是不可变的,这意味着

  • 你可以通过 nuxt.config.js 文件中的 extend 配置项来扩展 Webpack 的配置: module.exports = { build: { extend (config, { isDev, isClient }) { // ... } } }

  • 我有一个proto,它有一条包含扩展名的消息 我有另一个proto,它有扩展(只显示下面的一个扩展) 通过protobuf代码,我能够获得MsgB的描述符和FileDescriptor,并从中检索FieldDescriptor类型的扩展名“MsgB”。我通过protobuf代码查找扩展,而不是使用MsgB协议生成的代码,因为我试图迭代所有扩展消息,而不是将每个消息硬编码为可变扩展。(我理解Muta

  • 本文向大家介绍ASP.NET MVC HtmlHelper如何扩展,包括了ASP.NET MVC HtmlHelper如何扩展的使用技巧和注意事项,需要的朋友参考一下 一、ASP.NET 扩展方法三要素 (1)、静态类 可以从下图看出,InputExtension首先是一个静态类; (2)、静态方法 既然是静态类,那么其所有的方法必然都是静态方法,例如:public static MvcHtmlS