我想更改从连接池获得的每个连接的Oracle会话。
我发现只需执行一条语句即可完成。请参见here。
在连接池创建新连接之后,是否有办法挂接到jdbc模板或数据源并执行一条语句。
我正在使用Spring Boot并以这种方式创建数据源:
@Bean
@ConfigurationProperties(prefix="datasource.local")
public DataSource localDataSource() {
return DataSourceBuilder.create().build();
}
最佳答案
有很多方法可以做到这一点。
第一个:
DataSource是一个接口,那么为什么不自己实现(使用代理模式)呢?创建类似这样的内容:
class MyDataSource implements DataSource {
private DataSource realDataSource;
public Connection getConnection() {
Connection c = realDataSource.getConnection();
// do whatever you want to do and
return c;
}
}
所有其他方法将直接委托给realDataSource。
可以在提供的代码段中使用此代理。
您可以使用一些AOP-只是提供一个建议,即在建立连接后将运行并在其中执行您需要的任何操作。基本上是相同的代理,但由Spring自动创建。