diff --git a/src/main/java/io/ebean/config/AutoConfigure.java b/src/main/java/io/ebean/config/AutoConfigure.java index 5c0ef18af..879338ce5 100644 --- a/src/main/java/io/ebean/config/AutoConfigure.java +++ b/src/main/java/io/ebean/config/AutoConfigure.java @@ -6,10 +6,13 @@ package io.ebean.config; public interface AutoConfigure { /** - * Provide some configuration the ServerConfig prior to server creation. - *

- * Return true if the autoConfiguration applies to this ServerConfig. + * Perform configuration for the ServerConfig prior to properties load. */ - void configure(ServerConfig serverConfig); + void preConfigure(ServerConfig serverConfig); + + /** + * Provide some configuration the ServerConfig prior to server creation but after properties have been applied. + */ + void postConfigure(ServerConfig serverConfig); } diff --git a/src/main/java/io/ebean/config/ServerConfig.java b/src/main/java/io/ebean/config/ServerConfig.java index f4b59039c..28728cd22 100644 --- a/src/main/java/io/ebean/config/ServerConfig.java +++ b/src/main/java/io/ebean/config/ServerConfig.java @@ -2650,19 +2650,24 @@ public class ServerConfig { * Load the settings from the given properties */ private void configureFromProperties() { - autoConfiguration(); - PropertiesWrapper p = new PropertiesWrapper("ebean", name, properties, classLoadConfig); - loadSettings(p); + List autoConfigures = autoConfiguration(); + loadSettings(new PropertiesWrapper("ebean", name, properties, classLoadConfig)); + for (AutoConfigure autoConfigure : autoConfigures) { + autoConfigure.postConfigure(this); + } } /** * Use a 'plugin' to provide automatic configuration. Intended for automatic testing * configuration with Docker containers via ebean-test-config. */ - private void autoConfiguration() { + private List autoConfiguration() { + List list = new ArrayList<>(); for (AutoConfigure autoConfigure : serviceLoad(AutoConfigure.class)) { - autoConfigure.configure(this); + autoConfigure.preConfigure(this); + list.add(autoConfigure); } + return list; } /**