6 changed files with 161 additions and 1 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 |
||||
* |
||||
* http://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.boot.autoconfigure.cloud; |
||||
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
||||
import org.springframework.cloud.Cloud; |
||||
import org.springframework.cloud.app.ApplicationInstanceInfo; |
||||
import org.springframework.cloud.config.java.CloudScan; |
||||
import org.springframework.cloud.config.java.CloudScanConfiguration; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.context.annotation.Import; |
||||
import org.springframework.context.annotation.Profile; |
||||
import org.springframework.core.Ordered; |
||||
import org.springframework.core.annotation.Order; |
||||
|
||||
/** |
||||
* {@link EnableAutoConfiguration Auto-configuration} for Spring Cloud. |
||||
* <p> |
||||
* Activates when there is no bean of type {@link Cloud} is configured in the context, the |
||||
* {@link Cloud} type (this spring-cloud) is on the classpath, and the "cloud" profile is |
||||
* active. |
||||
* <p> |
||||
* Once in effect, the auto-configuration is the equivalent of adding the |
||||
* {@link CloudScan} annotation in one of the configuration file. Specifically, it adds a |
||||
* bean for each service bound to the application and one for |
||||
* {@link ApplicationInstanceInfo} |
||||
* |
||||
* @author Ramnivas Laddad |
||||
* @since 1.2.0 |
||||
*/ |
||||
@Configuration |
||||
@Profile("cloud") |
||||
@Order(CloudAutoConfiguration.ORDER) |
||||
@ConditionalOnClass(Cloud.class) |
||||
@ConditionalOnMissingBean(Cloud.class) |
||||
@ConditionalOnProperty(prefix = "spring.cloud", name = "enabled", havingValue = "true", matchIfMissing = true) |
||||
@Import(CloudScanConfiguration.class) |
||||
public class CloudAutoConfiguration { |
||||
|
||||
// Cloud configuration needs to happen early (before data, mongo etc.)
|
||||
public static final int ORDER = Ordered.HIGHEST_PRECEDENCE + 20; |
||||
|
||||
} |
||||
@ -0,0 +1,32 @@
@@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 |
||||
* |
||||
* http://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.boot.autoconfigure; |
||||
|
||||
import org.springframework.core.io.ResourceLoader; |
||||
|
||||
/** |
||||
* Public version of {@link AutoConfigurationSorter} for use in tests. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
public class TestAutoConfigurationSorter extends AutoConfigurationSorter { |
||||
|
||||
public TestAutoConfigurationSorter(ResourceLoader resourceLoader) { |
||||
super(resourceLoader); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,56 @@
@@ -0,0 +1,56 @@
|
||||
/* |
||||
* Copyright 2012-2014 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 |
||||
* |
||||
* http://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.boot.autoconfigure.cloud; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Collection; |
||||
import java.util.List; |
||||
|
||||
import org.junit.Test; |
||||
import org.springframework.boot.autoconfigure.TestAutoConfigurationSorter; |
||||
import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; |
||||
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; |
||||
import org.springframework.core.io.DefaultResourceLoader; |
||||
import org.springframework.core.io.ResourceLoader; |
||||
|
||||
import static org.hamcrest.Matchers.equalTo; |
||||
import static org.junit.Assert.assertThat; |
||||
|
||||
/** |
||||
* Tests for {@link CloudAutoConfiguration}. |
||||
* |
||||
* @author Phillip Webb |
||||
*/ |
||||
public class CloudAutoConfigurationTests { |
||||
|
||||
@Test |
||||
public void testOrder() throws Exception { |
||||
ResourceLoader loader = new DefaultResourceLoader(); |
||||
TestAutoConfigurationSorter sorter = new TestAutoConfigurationSorter(loader); |
||||
Collection<String> classNames = new ArrayList<String>(); |
||||
classNames.add(MongoAutoConfiguration.class.getName()); |
||||
classNames.add(DataSourceAutoConfiguration.class.getName()); |
||||
classNames.add(MongoRepositoriesAutoConfiguration.class.getName()); |
||||
classNames.add(JpaRepositoriesAutoConfiguration.class.getName()); |
||||
classNames.add(CloudAutoConfiguration.class.getName()); |
||||
List<String> ordered = sorter.getInPriorityOrder(classNames); |
||||
assertThat(ordered.get(0), equalTo(CloudAutoConfiguration.class.getName())); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue