From e7d66882ea6a09828b95bd877d1284907e03a12f Mon Sep 17 00:00:00 2001 From: spencergibb Date: Wed, 27 Jan 2021 20:10:42 -0500 Subject: [PATCH] Better classpath protections for pagable modules. Fixes gh-474 --- .../openfeign/FeignAutoConfiguration.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java index 51ed1de1..a670fd7e 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java @@ -62,6 +62,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort; import org.springframework.security.oauth2.client.OAuth2ClientContext; import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; @@ -94,20 +96,23 @@ public class FeignAutoConfiguration { return context; } - @Bean - @ConditionalOnMissingBean(PageJacksonModule.class) - @ConditionalOnClass(name = "org.springframework.data.domain.Page") + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass({ Module.class, Page.class, Sort.class }) @ConditionalOnProperty(value = "feign.autoconfiguration.jackson.enabled", havingValue = "true") - public Module pageJacksonModule() { - return new PageJacksonModule(); - } + protected static class FeignJacksonConfiguration { + + @Bean + @ConditionalOnMissingBean(PageJacksonModule.class) + public PageJacksonModule pageJacksonModule() { + return new PageJacksonModule(); + } + + @Bean + @ConditionalOnMissingBean(SortJacksonModule.class) + public SortJacksonModule sortModule() { + return new SortJacksonModule(); + } - @Bean - @ConditionalOnMissingBean(SortJacksonModule.class) - @ConditionalOnClass(name = "org.springframework.data.domain.Sort") - @ConditionalOnProperty(value = "feign.autoconfiguration.jackson.enabled", havingValue = "true") - public Module sortModule() { - return new SortJacksonModule(); } @Configuration(proxyBeanMethods = false)