我正在尝试为我的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 块吗?
答案 0 :(得分:0)
您看过DelegatingDataSource
吗?
我们也许可以使用代理解决您的问题,但是此类可能是为了解决您的根本问题:
该类打算被子类化,并且子类仅被覆盖 那些不应该简单地使用的方法(例如
getConnection()
) 委托给目标数据源。