diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java index 8ddf4d10..8017a1d4 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/context/scope/refresh/RefreshScope.java @@ -24,6 +24,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; +import org.springframework.core.Ordered; import org.springframework.jmx.export.annotation.ManagedOperation; import org.springframework.jmx.export.annotation.ManagedResource; @@ -70,11 +71,12 @@ import org.springframework.jmx.export.annotation.ManagedResource; */ @ManagedResource public class RefreshScope extends GenericScope - implements ApplicationContextAware, BeanDefinitionRegistryPostProcessor { + implements ApplicationContextAware, BeanDefinitionRegistryPostProcessor, Ordered { private ApplicationContext context; private BeanDefinitionRegistry registry; private boolean eager = true; + private int order = Ordered.LOWEST_PRECEDENCE - 100; /** * Create a scope instance and give it the default name: "refresh". @@ -83,6 +85,15 @@ public class RefreshScope extends GenericScope super.setName("refresh"); } + @Override + public int getOrder() { + return this.order; + } + + public void setOrder(int order) { + this.order = order; + } + /** * Flag to determine whether all beans in refresh scope should be instantiated eagerly * on startup. Default true. @@ -105,7 +116,8 @@ public class RefreshScope extends GenericScope if (this.eager && this.registry != null) { for (String name : this.context.getBeanDefinitionNames()) { BeanDefinition definition = this.registry.getBeanDefinition(name); - if (this.getName().equals(definition.getScope())) { + if (this.getName().equals(definition.getScope()) + && !definition.isLazyInit()) { this.context.getBean(name); } }