Adds spring-cloud-starter-bootstrap.

This allows users to opt-in to bootstrap via classpath rather than properties.
This commit is contained in:
spencergibb
2020-08-10 15:27:17 -04:00
parent da469626f4
commit 8f8f7d4920
9 changed files with 152 additions and 1 deletions

View File

@@ -22,6 +22,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.NoneNestedConditions;
import org.springframework.context.annotation.Conditional;
@@ -41,6 +42,11 @@ public @interface ConditionalOnBootstrapDisabled {
super(ConfigurationPhase.REGISTER_BEAN);
}
@ConditionalOnClass(name = "org.springframework.cloud.bootstrap.marker.Marker")
static class OnBootstrapMarkerClassPresent {
}
@ConditionalOnProperty(name = USE_LEGACY_PROCESSING_PROPERTY)
static class OnUseLegacyProcessingEnabled {

View File

@@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Conditional;
@@ -41,6 +42,11 @@ public @interface ConditionalOnBootstrapEnabled {
super(ConfigurationPhase.REGISTER_BEAN);
}
@ConditionalOnClass(name = PropertyUtils.MARKER_CLASS)
static class OnBootstrapMarkerClassPresent {
}
@ConditionalOnProperty(name = USE_LEGACY_PROCESSING_PROPERTY)
static class OnUseLegacyProcessingEnabled {

View File

@@ -17,6 +17,7 @@
package org.springframework.cloud.util;
import org.springframework.core.env.Environment;
import org.springframework.util.ClassUtils;
public abstract class PropertyUtils {
@@ -30,12 +31,33 @@ public abstract class PropertyUtils {
*/
public static final String USE_LEGACY_PROCESSING_PROPERTY = "spring.config.use-legacy-processing";
/**
* Property name for bootstrap marker class name.
*/
public static final String MARKER_CLASS = "org.springframework.cloud.bootstrap.marker.Marker";
/**
* Boolean if bootstrap marker class exists.
*/
public static final boolean MARKER_CLASS_EXISTS = markerClassExists();
private static boolean markerClassExists() {
try {
ClassUtils.forName(MARKER_CLASS, null);
return true;
}
catch (ClassNotFoundException e) {
return false;
}
}
private PropertyUtils() {
}
public static boolean bootstrapEnabled(Environment environment) {
return environment.getProperty(BOOTSTRAP_ENABLED_PROPERTY, Boolean.class, false);
return environment.getProperty(BOOTSTRAP_ENABLED_PROPERTY, Boolean.class, false)
|| MARKER_CLASS_EXISTS;
}
public static boolean useLegacyProcessing(Environment environment) {