diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfiguration.java index 541d3ad4ec..43e458110d 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/redis/RedisAutoConfiguration.java @@ -25,6 +25,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.PoolConfig; @@ -46,6 +47,7 @@ import com.lambdaworks.redis.RedisClient; */ @Configuration @ConditionalOnClass({ LettuceConnection.class, RedisOperations.class, RedisClient.class }) +@EnableConfigurationProperties public class RedisAutoConfiguration { @Configuration diff --git a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java index fec88304b3..2e5a1e50e2 100644 --- a/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java +++ b/spring-boot/src/main/java/org/springframework/boot/SpringApplication.java @@ -376,8 +376,19 @@ public class SpringApplication { protected void handleError(ConfigurableApplicationContext context, ApplicationEventMulticaster multicaster, Throwable ex, String... args) { - multicaster.multicastEvent(new SpringApplicationErrorEvent(this, context, args, - ex)); + try { + multicaster.multicastEvent(new SpringApplicationErrorEvent(this, context, + args, ex)); + } + catch (Exception e) { + // We don't want to fail here and mask the original exception + if (this.log.isDebugEnabled()) { + this.log.error("Error handling failed", e); + } + else { + this.log.warn("Error handling failed (" + e.getMessage() + ")"); + } + } if (context != null) { context.close(); } @@ -1004,8 +1015,8 @@ public class SpringApplication { @Override protected Collection> getApplicationListeners( ApplicationEvent event) { - List> listeners = new ArrayList>( - super.getApplicationListeners(event)); + List> listeners = new ArrayList>(); + listeners.addAll(super.getApplicationListeners(event)); if (event instanceof SpringApplicationErrorEvent) { Collections.reverse(listeners); }