diff --git a/spring-cloud-netflix-archaius/src/main/java/org/springframework/cloud/netflix/archaius/ArchaiusAutoConfiguration.java b/spring-cloud-netflix-archaius/src/main/java/org/springframework/cloud/netflix/archaius/ArchaiusAutoConfiguration.java index 68da799b9..043057371 100644 --- a/spring-cloud-netflix-archaius/src/main/java/org/springframework/cloud/netflix/archaius/ArchaiusAutoConfiguration.java +++ b/spring-cloud-netflix-archaius/src/main/java/org/springframework/cloud/netflix/archaius/ArchaiusAutoConfiguration.java @@ -51,6 +51,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.core.Ordered; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.Environment; @@ -65,7 +66,9 @@ import static com.netflix.config.ConfigurationManager.URL_CONFIG_NAME; /** * @author Spencer Gibb + * @author Liang Yong */ +@Lazy(false) @Configuration(proxyBeanMethods = false) @ConditionalOnClass({ ConcurrentCompositeConfiguration.class, ConfigurationBuilder.class }) diff --git a/spring-cloud-netflix-archaius/src/test/java/org/springframework/cloud/netflix/archaius/LazyLoadConfigurationTests.java b/spring-cloud-netflix-archaius/src/test/java/org/springframework/cloud/netflix/archaius/LazyLoadConfigurationTests.java new file mode 100644 index 000000000..aa456d0f6 --- /dev/null +++ b/spring-cloud-netflix-archaius/src/test/java/org/springframework/cloud/netflix/archaius/LazyLoadConfigurationTests.java @@ -0,0 +1,50 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.netflix.archaius; + +import com.netflix.config.DynamicProperty; +import org.junit.jupiter.api.Test; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * @author Liang Yong + */ + +@SpringBootTest(classes = LazyLoadConfigurationTests.TestConfig.class, + properties = { "client.ribbon.listOfServers=foo.com,bar.com", + "spring.main.lazy-initialization=true" }) +public class LazyLoadConfigurationTests { + + @Test + public void enableLazyInitialization() { + DynamicProperty instance = DynamicProperty + .getInstance("client.ribbon.listOfServers"); + assertThat(instance.getString()).isEqualTo("foo.com,bar.com"); + } + + @SpringBootConfiguration + @EnableAutoConfiguration + static class TestConfig { + + } + +}