Há muitas maneiras de fazer isso. A primeira:
-
DataSource é uma interface, então por que você não a implementa (use o padrão Proxy)? Crie algo assim:
class MyDataSource implements DataSource { private DataSource realDataSource; public Connection getConnection() { Connection c = realDataSource.getConnection(); // do whatever you want to do and return c; } }
Todos os outros métodos serão delegados diretamente para realDataSource.
Esse proxy pode ser usado em um trecho de código fornecido.
-
Você pode usar algum AOP - apenas forneça um aviso de que, após a criação da conexão, executar e fazer o que você precisar lá. Basicamente é o mesmo proxy, mas criado automaticamente pelo Spring.