org.springframework.jdbc.datasource

## Class DelegatingDataSource

- java.lang.Object
- - org.springframework.jdbc.datasource.DelegatingDataSource

- All Implemented Interfaces:
    Wrapper, CommonDataSource, DataSource, InitializingBean
  Direct Known Subclasses:
    LazyConnectionDataSourceProxy, TransactionAwareDataSourceProxy, UserCredentialsDataSourceAdapter

      public class DelegatingDataSource
      extends Object
      implements DataSource, InitializingBean

  JDBC `DataSource` implementation that delegates all calls to a given target `DataSource`.

  This class is meant to be subclassed, with subclasses overriding only those methods (such as `getConnection()`) that should not simply delegate to the target DataSource.

  Since:
    1.1
  Author:
    Juergen Hoeller
  See Also:
    `getConnection()`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `DelegatingDataSource()` Create a new DelegatingDataSource.
    `DelegatingDataSource(DataSource targetDataSource)` Create a new DelegatingDataSource.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()` Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).
    `Connection` | `getConnection()`
    `Connection` | `getConnection(String username, String password)`
    `int` | `getLoginTimeout()`
    `PrintWriter` | `getLogWriter()`
    `Logger` | `getParentLogger()`
    `DataSource` | `getTargetDataSource()` Return the target DataSource that this DataSource should delegate to.
    `boolean` | `isWrapperFor(Class<?> iface)`
    `void` | `setLoginTimeout(int seconds)`
    `void` | `setLogWriter(PrintWriter out)`
    `void` | `setTargetDataSource(DataSource targetDataSource)` Set the target DataSource that this DataSource should delegate to.
    `<T> T` | `unwrap(Class<T> iface)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DelegatingDataSource

          public DelegatingDataSource()

      Create a new DelegatingDataSource.
      See Also:
        `setTargetDataSource(javax.sql.DataSource)`

    - #### DelegatingDataSource

          public DelegatingDataSource(DataSource targetDataSource)

      Create a new DelegatingDataSource.
      Parameters:
        `targetDataSource` - the target DataSource

  - ### Method Detail

    - #### setTargetDataSource

          public void setTargetDataSource(DataSource targetDataSource)

      Set the target DataSource that this DataSource should delegate to.

    - #### getTargetDataSource

          public DataSource getTargetDataSource()

      Return the target DataSource that this DataSource should delegate to.

    - #### afterPropertiesSet

          public void afterPropertiesSet()

      Description copied from interface: `InitializingBean`
      Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

      This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.

      Specified by:
        `afterPropertiesSet` in interface `InitializingBean`

    - #### getConnection

          public Connection getConnection()
                                   throws SQLException

      Specified by:
        `getConnection` in interface `DataSource`
      Throws:
        `SQLException`

    - #### getConnection

          public Connection getConnection(String username,
                                          String password)
                                   throws SQLException

      Specified by:
        `getConnection` in interface `DataSource`
      Throws:
        `SQLException`

    - #### getLogWriter

          public PrintWriter getLogWriter()
                                   throws SQLException

      Specified by:
        `getLogWriter` in interface `CommonDataSource`
      Throws:
        `SQLException`

    - #### setLogWriter

          public void setLogWriter(PrintWriter out)
                            throws SQLException

      Specified by:
        `setLogWriter` in interface `CommonDataSource`
      Throws:
        `SQLException`

    - #### getLoginTimeout

          public int getLoginTimeout()
                              throws SQLException

      Specified by:
        `getLoginTimeout` in interface `CommonDataSource`
      Throws:
        `SQLException`

    - #### setLoginTimeout

          public void setLoginTimeout(int seconds)
                               throws SQLException

      Specified by:
        `setLoginTimeout` in interface `CommonDataSource`
      Throws:
        `SQLException`

    - #### unwrap

          public <T> T unwrap(Class<T> iface)
                       throws SQLException

      Specified by:
        `unwrap` in interface `Wrapper`
      Throws:
        `SQLException`

    - #### isWrapperFor

          public boolean isWrapperFor(Class<?> iface)
                               throws SQLException

      Specified by:
        `isWrapperFor` in interface `Wrapper`
      Throws:
        `SQLException`

    - #### getParentLogger

          public Logger getParentLogger()

      Specified by:
        `getParentLogger` in interface `CommonDataSource`