Class SpringJdbcProxyFactory

java.lang.Object
net.ttddyy.observation.boot.SpringJdbcProxyFactory
All Implemented Interfaces:
net.ttddyy.dsproxy.proxy.JdbcProxyFactory

public class SpringJdbcProxyFactory extends Object implements net.ttddyy.dsproxy.proxy.JdbcProxyFactory
JdbcProxyFactory implementation using spring's ProxyFactory.

Using Spring's proxy mechanism allows other Spring-based libraries to correctly introspect and extract the underlying target object from the proxy.

This is particularly useful when Spring infrastructure components need to inspect the concrete type of a proxied object. For example, Spring Cloud's refresh scope logic checks whether a DataSource bean is a specific implementation such as HikariCP. When the DataSource is wrapped by this proxy factory, Spring can still extract the underlying target object and perform such checks correctly. (see issue#99)

Since:
1.4
Author:
Tadaya Tsuyukubo
See Also:
  • ProxyFactory
  • Constructor Details

    • SpringJdbcProxyFactory

      public SpringJdbcProxyFactory()
  • Method Details

    • createDataSource

      public DataSource createDataSource(DataSource dataSource, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createDataSource in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createConnection

      public Connection createConnection(Connection connection, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createConnection in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createStatement

      public Statement createStatement(Statement statement, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, Connection proxyConnection, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createStatement in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createPreparedStatement

      public PreparedStatement createPreparedStatement(PreparedStatement preparedStatement, String query, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, Connection proxyConnection, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig, boolean generateKey)
      Specified by:
      createPreparedStatement in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createCallableStatement

      public CallableStatement createCallableStatement(CallableStatement callableStatement, String query, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, Connection proxyConnection, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createCallableStatement in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createResultSet

      public ResultSet createResultSet(ResultSet resultSet, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createResultSet in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory
    • createGeneratedKeys

      public ResultSet createGeneratedKeys(ResultSet resultSet, net.ttddyy.dsproxy.ConnectionInfo connectionInfo, net.ttddyy.dsproxy.proxy.ProxyConfig proxyConfig)
      Specified by:
      createGeneratedKeys in interface net.ttddyy.dsproxy.proxy.JdbcProxyFactory