diff --git a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java index af49fdc1..6e8d6bc6 100644 --- a/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java +++ b/spring-cloud-context/src/main/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializer.java @@ -217,10 +217,13 @@ public class EnvironmentDecryptApplicationInitializer implements } } else if (COLLECTION_PROPERTY.matcher(key).matches()) { - // put non-ecrypted properties so merging of index properties + // put non-encrypted properties so merging of index properties // happens correctly otherCollectionProperties.put(key, value); } + else { + overrides.remove(key); + } } } // copy all indexed properties even if not encrypted diff --git a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java index 60889642..007b0b29 100644 --- a/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java +++ b/spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java @@ -75,6 +75,17 @@ public class EnvironmentDecryptApplicationInitializerTests { assertEquals("spam", context.getEnvironment().getProperty("foo")); } + @Test + public void propertySourcesOrderedCorrectlyWithUnencryptedOverrides() { + ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(); + TestPropertyValues.of("foo: {cipher}bar").applyTo(context); + context.getEnvironment().getPropertySources() + .addFirst(new MapPropertySource("test_override", + Collections.singletonMap("foo", "spam"))); + this.listener.initialize(context); + assertEquals("spam", context.getEnvironment().getProperty("foo")); + } + @Test(expected = IllegalStateException.class) public void errorOnDecrypt() { this.listener = new EnvironmentDecryptApplicationInitializer(