我想更改从连接池获得的每个连接的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自动创建。

10-04 20:10