public class EmbeddedDatabaseFactory
extends java.lang.Object
EmbeddedDatabase
instance.
Callers are guaranteed that the returned database has been fully initialized and populated.
The factory can be configured as follows:
generateUniqueDatabaseName
to set a unique, random name
for the database.
setDatabaseName(java.lang.String)
to set an explicit name for the database.
setDatabaseType(org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType)
to set the database type if you wish to
use one of the supported types.
setDatabaseConfigurer(org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseConfigurer)
to configure support for a custom
embedded database type.
setDatabasePopulator(org.springframework.jdbc.datasource.init.DatabasePopulator)
to change the algorithm used to
populate the database.
setDataSourceFactory(org.springframework.jdbc.datasource.embedded.DataSourceFactory)
to change the type of
DataSource
used to connect to the database.
After configuring the factory, call getDatabase()
to obtain
a reference to the EmbeddedDatabase
instance.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
DEFAULT_DATABASE_NAME
Default name for an embedded database: "testdb"
|
Constructor and Description |
---|
EmbeddedDatabaseFactory() |
Modifier and Type | Method and Description |
---|---|
EmbeddedDatabase |
getDatabase()
Factory method that returns the embedded database
instance, which is also a
DataSource . |
protected javax.sql.DataSource |
getDataSource()
Hook that gets the
DataSource that provides the connectivity to the
embedded database. |
protected void |
initDatabase()
Hook to initialize the embedded database.
|
void |
setDatabaseConfigurer(EmbeddedDatabaseConfigurer configurer)
Set the strategy that will be used to configure the embedded database instance.
|
void |
setDatabaseName(java.lang.String databaseName)
Set the name of the database.
|
void |
setDatabasePopulator(DatabasePopulator populator)
Set the strategy that will be used to initialize or populate the embedded
database.
|
void |
setDatabaseType(EmbeddedDatabaseType type)
Set the type of embedded database to use.
|
void |
setDataSourceFactory(DataSourceFactory dataSourceFactory)
Set the factory to use to create the
DataSource instance that
connects to the embedded database. |
void |
setGenerateUniqueDatabaseName(boolean generateUniqueDatabaseName)
Set the
generateUniqueDatabaseName flag to enable or disable
generation of a pseudo-random unique ID to be used as the database name. |
protected void |
shutdownDatabase()
Hook to shutdown the embedded database.
|
public static final java.lang.String DEFAULT_DATABASE_NAME
public void setGenerateUniqueDatabaseName(boolean generateUniqueDatabaseName)
generateUniqueDatabaseName
flag to enable or disable
generation of a pseudo-random unique ID to be used as the database name.
Setting this flag to true
overrides any explicit name set
via setDatabaseName(java.lang.String)
.
setDatabaseName(java.lang.String)
public void setDatabaseName(java.lang.String databaseName)
Defaults to "testdb".
Will be overridden if the generateUniqueDatabaseName
flag
has been set to true
.
databaseName
- name of the embedded databasesetGenerateUniqueDatabaseName(boolean)
public void setDataSourceFactory(DataSourceFactory dataSourceFactory)
DataSource
instance that
connects to the embedded database.
Defaults to SimpleDriverDataSourceFactory
.
public void setDatabaseType(EmbeddedDatabaseType type)
Call this when you wish to configure one of the pre-supported types.
Defaults to HSQL.
type
- the database typepublic void setDatabaseConfigurer(EmbeddedDatabaseConfigurer configurer)
Call this when you wish to use an embedded database type not already supported.
public void setDatabasePopulator(DatabasePopulator populator)
Defaults to null
.
public EmbeddedDatabase getDatabase()
DataSource
.protected void initDatabase()
If the generateUniqueDatabaseName
flag has been set to true
,
the current value of the database name will
be overridden with an auto-generated name.
Subclasses may call this method to force initialization; however, this method should only be invoked once.
After calling this method, getDataSource()
returns the
DataSource
providing connectivity to the database.
protected void shutdownDatabase()
After calling, getDataSource()
returns null
.
Does nothing if no embedded database has been initialized.
@Nullable protected final javax.sql.DataSource getDataSource()
DataSource
that provides the connectivity to the
embedded database.
Returns null
if the DataSource
has not been initialized
or if the database has been shut down. Subclasses may call this method to
access the DataSource
instance directly.