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

Methods
`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`