diff --git a/grails-bootstrap/src/main/groovy/grails/util/Environment.java b/grails-bootstrap/src/main/groovy/grails/util/Environment.java index 95dcfaa8fca..5df8162a68a 100644 --- a/grails-bootstrap/src/main/groovy/grails/util/Environment.java +++ b/grails-bootstrap/src/main/groovy/grails/util/Environment.java @@ -93,6 +93,7 @@ public enum Environment { TEST_ENVIRONMENT_SHORT_NAME, Environment.TEST.getName()); private static Holder cachedCurrentEnvironment = new Holder("Environment"); private static final boolean cachedHasGrailsHome = System.getProperty("grails.home") != null; + private static boolean initializingState = false; private String name; Environment() { @@ -400,8 +401,14 @@ public static boolean isInteractiveMode() { * @return Whether interactive mode is enabled */ public static boolean isInitializing() { - return Boolean.getBoolean(INITIALIZING); + return initializingState; } + + public static void setInitializing(boolean initializing) { + initializingState=initializing; + System.setProperty(INITIALIZING, String.valueOf(initializing)); + } + /** * @return true if the reloading agent is active */ diff --git a/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/GrailsRuntimeConfigurator.java b/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/GrailsRuntimeConfigurator.java index ae976ae8bfb..02b1f3483ad 100644 --- a/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/GrailsRuntimeConfigurator.java +++ b/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/GrailsRuntimeConfigurator.java @@ -166,9 +166,9 @@ public WebApplicationContext configure(ServletContext context, boolean loadExter application.setMainContext(webSpringConfig.getUnrefreshedApplicationContext()); - System.setProperty(Environment.INITIALIZING, "true"); + Environment.setInitializing(true); ctx = (WebApplicationContext) webSpringConfig.getApplicationContext(); - System.setProperty(Environment.INITIALIZING, ""); + Environment.setInitializing(false); pluginManager.setApplicationContext(ctx); pluginManager.doDynamicMethods(); diff --git a/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/ReloadAwareAutowireCapableBeanFactory.java b/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/ReloadAwareAutowireCapableBeanFactory.java index 4bfd0aad589..e0d5d115985 100644 --- a/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/ReloadAwareAutowireCapableBeanFactory.java +++ b/grails-core/src/main/groovy/org/codehaus/groovy/grails/commons/spring/ReloadAwareAutowireCapableBeanFactory.java @@ -182,6 +182,9 @@ protected boolean isExcludedFromDependencyCheck(PropertyDescriptor pd) { @Override public void autowireBeanProperties(Object existingBean, int autowireMode, boolean dependencyCheck) throws BeansException { + if(Environment.isInitializing()) { + return; + } if(autowireMode == AUTOWIRE_BY_NAME) { if(DISABLE_AUTOWIRE_BY_NAME_OPTIMIZATIONS || dependencyCheck || existingBean instanceof Aware) { super.autowireBeanProperties(existingBean, autowireMode, dependencyCheck); diff --git a/grails-plugin-domain-class/src/main/groovy/org/codehaus/groovy/grails/plugins/DomainClassGrailsPlugin.groovy b/grails-plugin-domain-class/src/main/groovy/org/codehaus/groovy/grails/plugins/DomainClassGrailsPlugin.groovy index 4e72a94b519..2ddad5a6230 100644 --- a/grails-plugin-domain-class/src/main/groovy/org/codehaus/groovy/grails/plugins/DomainClassGrailsPlugin.groovy +++ b/grails-plugin-domain-class/src/main/groovy/org/codehaus/groovy/grails/plugins/DomainClassGrailsPlugin.groovy @@ -203,9 +203,11 @@ class DomainClassGrailsPlugin { return gormValidationApi } } + + AutowireCapableBeanFactory autowireCapableBeanFactory=ctx.autowireCapableBeanFactory + int byName=AutowireCapableBeanFactory.AUTOWIRE_BY_NAME metaClass.static.autowireDomain = { instance -> - if(!Environment.isInitializing()) - ctx.autowireCapableBeanFactory.autowireBeanProperties(instance,AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false) + autowireCapableBeanFactory.autowireBeanProperties(instance, byName, false) } } }