Spring Boot数据源不会转到BeanPostProcessor

时间:2018-09-07 10:44:30

标签: java spring hibernate spring-boot spring-data

我正在尝试为我的dataSource代理,但是以下内容永远不会与bean数据源对象一起调用,并且 bean instanceof dataSource 始终为 false

@Component
public class DatasourceProxyBeanPostProcessor implements 
BeanPostProcessor {

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) {
        if (bean instanceof DataSource) {
            final ProxyFactory factory = new ProxyFactory(bean);
            factory.setProxyTargetClass(true);
            factory.addAdvice(new ProxyDataSourceInterceptor((DataSource) bean));
            return factory.getProxy();
        }
        return bean;
    }

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) {
        return bean;
    }
}

我对postgres具有以下配置:

spring:
  datasource:
    username: ***
    password: ***
    url: jdbc:postgresql://localhost:5432/postgres?currentSchema=myschema

Spring Boot:v1.5.x

有人知道为什么我不进入数据源的 bean instance 块吗?

1 个答案:

答案 0 :(得分:0)

您看过DelegatingDataSource吗?

我们也许可以使用代理解决您的问题,但是此类可能是为了解决您的根本问题:

  

该类打算被子类化,并且子类仅被覆盖   那些不应该简单地使用的方法(例如getConnection())   委托给目标数据源。