Skip to content

Commit bfe3bd2

Browse files
committed
Customize RestTemplateBuilder
Allow customization of RestTemplateBuilder when created by RestTemplateAutoConfiguration.
1 parent 742cb3f commit bfe3bd2

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfigurationTests.java

+21-19
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@
4747
import static org.assertj.core.api.Assertions.assertThat;
4848
import static org.assertj.core.api.Assertions.assertThatThrownBy;
4949
import static org.mockito.ArgumentMatchers.any;
50+
import static org.mockito.BDDMockito.doThrow;
5051
import static org.mockito.BDDMockito.given;
51-
import static org.mockito.Mockito.doThrow;
52-
import static org.mockito.Mockito.mock;
53-
import static org.mockito.Mockito.verify;
52+
import static org.mockito.BDDMockito.mock;
53+
import static org.mockito.BDDMockito.verify;
5454

5555
/**
5656
* Tests for {@link RestTemplateAutoConfiguration}
@@ -164,24 +164,21 @@ void whenReactiveWebApplicationRestTemplateBuilderIsNotConfigured() {
164164

165165
@Test
166166
void customizerShouldCustomizeBuilder() {
167-
contextRunner.withUserConfiguration(RestTemplateBuilderCustomizerConfig.class)
168-
.run((context) -> {
169-
assertThatThrownBy(() -> context.getBean(RestTemplateBuilder.class).build())
170-
.isInstanceOf(IllegalStateException.class)
171-
.hasMessageContaining("customized builder");
172-
});
167+
this.contextRunner.withUserConfiguration(RestTemplateBuilderCustomizerConfig.class).run((context) ->
168+
assertThatThrownBy(() -> context.getBean(RestTemplateBuilder.class).build())
169+
.isInstanceOf(IllegalStateException.class).hasMessageContaining("customized builder")
170+
);
173171
}
174172

175173
@Test
176174
void customizerShouldReturnInstanceNotANull() {
177-
contextRunner.withUserConfiguration(RestTemplateBuilderCustomizerReturnsNullConfig.class)
178-
.run((context) -> {
179-
assertThatThrownBy(() -> context.getBean(RestTemplateBuilder.class).build())
180-
.isInstanceOf(BeanCreationException.class)
181-
.hasMessageContaining("Error creating bean with name 'restTemplateBuilder'")
182-
.hasRootCauseInstanceOf(IllegalArgumentException.class)
183-
.hasRootCauseMessage("RestTemplateBuilderCustomizer returned null builder");
184-
});
175+
this.contextRunner.withUserConfiguration(RestTemplateBuilderCustomizerReturnsNullConfig.class).run((context) ->
176+
assertThatThrownBy(() -> context.getBean(RestTemplateBuilder.class).build())
177+
.isInstanceOf(BeanCreationException.class)
178+
.hasMessageContaining("Error creating bean with name 'restTemplateBuilder'")
179+
.hasRootCauseInstanceOf(IllegalArgumentException.class)
180+
.hasRootCauseMessage("RestTemplateBuilderCustomizer returned null builder")
181+
);
185182
}
186183

187184
@Configuration(proxyBeanMethods = false)
@@ -261,21 +258,26 @@ static class CustomHttpMessageConverter extends StringHttpMessageConverter {
261258

262259
@Configuration(proxyBeanMethods = false)
263260
static class RestTemplateBuilderCustomizerConfig {
261+
264262
@Bean
265263
RestTemplateBuilderCustomizer restTemplateBuilderCustomizer() {
266-
return oldBuilder -> {
264+
return (oldBuilder) -> {
267265
final RestTemplateBuilder builder = Mockito.spy(oldBuilder);
268266
doThrow(new IllegalStateException("customized builder")).when(builder).build();
269267
return builder;
270268
};
271269
}
270+
272271
}
273272

274273
@Configuration(proxyBeanMethods = false)
275274
static class RestTemplateBuilderCustomizerReturnsNullConfig {
275+
276276
@Bean
277277
RestTemplateBuilderCustomizer restTemplateBuilderCustomizer() {
278-
return oldBuilder -> null;
278+
return (oldBuilder) -> null;
279279
}
280+
280281
}
282+
281283
}

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderCustomizer.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,12 @@
2525
*/
2626
@FunctionalInterface
2727
public interface RestTemplateBuilderCustomizer {
28+
2829
/**
2930
* Callback to customize a {@link RestTemplateBuilder} instance.
30-
*
3131
* @param restTemplateBuilder the original builder to customize
3232
* @return customized builder instance
3333
*/
3434
RestTemplateBuilder customize(RestTemplateBuilder restTemplateBuilder);
35+
3536
}

0 commit comments

Comments
 (0)