Class ResourceDatabasePopulator

java.lang.Object
org.springframework.r2dbc.connection.init.ResourceDatabasePopulator
All Implemented Interfaces:
DatabasePopulator

public class ResourceDatabasePopulator extends Object implements DatabasePopulator
Populates, initializes, or cleans up a database using SQL scripts defined in external resources.
Since:
5.3
Author:
Keith Donald, Dave Syer, Juergen Hoeller, Chris Beams, Oliver Gierke, Sam Brannen, Chris Baldwin, Phillip Webb, Mark Paluch
See Also:
  • Constructor Details

    • ResourceDatabasePopulator

      public ResourceDatabasePopulator()
      Create a new ResourceDatabasePopulator with default settings.
    • ResourceDatabasePopulator

      public ResourceDatabasePopulator(Resource... scripts)
      Create a new ResourceDatabasePopulator with default settings for the supplied scripts.
      Parameters:
      scripts - the scripts to execute to initialize or clean up the database (never null)
    • ResourceDatabasePopulator

      public ResourceDatabasePopulator(boolean continueOnError, boolean ignoreFailedDrops, @Nullable String sqlScriptEncoding, Resource... scripts)
      Construct a new ResourceDatabasePopulator with the supplied values.
      Parameters:
      continueOnError - flag to indicate that all failures in SQL should be logged but not cause a failure
      ignoreFailedDrops - flag to indicate that a failed SQL DROP statement can be ignored
      sqlScriptEncoding - the encoding for the supplied SQL scripts (may be null or empty to indicate platform encoding)
      scripts - the scripts to execute to initialize or clean up the database (never null)
  • Method Details

    • addScript

      public void addScript(Resource script)
      Add a script to execute to initialize or clean up the database.
      Parameters:
      script - the path to an SQL script (never null)
    • addScripts

      public void addScripts(Resource... scripts)
      Add multiple scripts to execute to initialize or clean up the database.
      Parameters:
      scripts - the scripts to execute (never null)
    • setScripts

      public void setScripts(Resource... scripts)
      Set the scripts to execute to initialize or clean up the database, replacing any previously added scripts.
      Parameters:
      scripts - the scripts to execute (never null)
    • setSqlScriptEncoding

      public void setSqlScriptEncoding(@Nullable String sqlScriptEncoding)
      Specify the encoding for the configured SQL scripts, if different from the platform encoding.
      Parameters:
      sqlScriptEncoding - the encoding used in scripts (may be null or empty to indicate platform encoding)
      See Also:
    • setSqlScriptEncoding

      public void setSqlScriptEncoding(@Nullable Charset sqlScriptEncoding)
      Specify the encoding for the configured SQL scripts, if different from the platform encoding.
      Parameters:
      sqlScriptEncoding - the encoding used in scripts (may be null or empty to indicate platform encoding)
      See Also:
    • setSeparator

      public void setSeparator(String separator)
      Specify the statement separator, if a custom one.

      Defaults to ";" if not specified and falls back to "\n" as a last resort; may be set to ScriptUtils.EOF_STATEMENT_SEPARATOR to signal that each script contains a single statement without a separator.

      Parameters:
      separator - the script statement separator
    • setCommentPrefix

      public void setCommentPrefix(String commentPrefix)
      Set the prefix that identifies single-line comments within the SQL scripts.

      Defaults to "--".

      Parameters:
      commentPrefix - the prefix for single-line comments
      See Also:
    • setCommentPrefixes

      public void setCommentPrefixes(String... commentPrefixes)
      Set the prefixes that identify single-line comments within the SQL scripts.

      Defaults to ["--"].

      Parameters:
      commentPrefixes - the prefixes for single-line comments
    • setBlockCommentStartDelimiter

      public void setBlockCommentStartDelimiter(String blockCommentStartDelimiter)
      Set the start delimiter that identifies block comments within the SQL scripts.

      Defaults to "/*".

      Parameters:
      blockCommentStartDelimiter - the start delimiter for block comments (never null or empty)
      See Also:
    • setBlockCommentEndDelimiter

      public void setBlockCommentEndDelimiter(String blockCommentEndDelimiter)
      Set the end delimiter that identifies block comments within the SQL scripts.

      Defaults to "*/".

      Parameters:
      blockCommentEndDelimiter - the end delimiter for block comments (never null or empty)
      See Also:
    • setContinueOnError

      public void setContinueOnError(boolean continueOnError)
      Flag to indicate that all failures in SQL should be logged but not cause a failure.

      Defaults to false.

      Parameters:
      continueOnError - true if script execution should continue on error
    • setIgnoreFailedDrops

      public void setIgnoreFailedDrops(boolean ignoreFailedDrops)
      Flag to indicate that a failed SQL DROP statement can be ignored.

      This is useful for a non-embedded database whose SQL dialect does not support an IF EXISTS clause in a DROP statement.

      The default is false so that if the populator runs accidentally, it will fail fast if a script starts with a DROP statement.

      Parameters:
      ignoreFailedDrops - true if failed drop statements should be ignored
    • setDataBufferFactory

      public void setDataBufferFactory(DataBufferFactory dataBufferFactory)
      Set the DataBufferFactory to use for Resource loading.

      Defaults to DefaultDataBufferFactory.

      Parameters:
      dataBufferFactory - the DataBufferFactory to use, must not be null
    • populate

      public reactor.core.publisher.Mono<Void> populate(Connection connection) throws ScriptException
      Description copied from interface: DatabasePopulator
      Populate, initialize, or clean up the database using the provided R2DBC Connection.
      Specified by:
      populate in interface DatabasePopulator
      Parameters:
      connection - the R2DBC connection to use to populate the db; already configured and ready to use, must not be null
      Returns:
      Mono that initiates script execution and is notified upon completion
      Throws:
      ScriptException - in all other error cases