From 5d311d62037b7f4408c49ba95cced1ddb8049a43 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 17 Dec 2015 09:51:12 +0000 Subject: [PATCH] Polish --- .../EndpointWebMvcAutoConfiguration.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.java index b0e8106177..1b86940cc9 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.java @@ -315,16 +315,15 @@ public class EndpointWebMvcAutoConfiguration Integer serverPort = getPortProperty(environment, "server."); if (serverPort == null && hasCustomBeanDefinition(beanFactory, ServerProperties.class, ServerPropertiesAutoConfiguration.class)) { - ServerProperties bean = getBean(beanFactory, ServerProperties.class); - serverPort = bean.getPort(); + serverPort = getTemporaryBean(beanFactory, ServerProperties.class) + .getPort(); } Integer managementPort = getPortProperty(environment, "management."); if (managementPort == null && hasCustomBeanDefinition(beanFactory, ManagementServerProperties.class, ManagementServerPropertiesAutoConfiguration.class)) { - ManagementServerProperties bean = getBean(beanFactory, - ManagementServerProperties.class); - managementPort = bean.getPort(); + managementPort = getTemporaryBean(beanFactory, + ManagementServerProperties.class).getPort(); } if (managementPort != null && managementPort < 0) { return DISABLE; @@ -335,7 +334,7 @@ public class EndpointWebMvcAutoConfiguration : DIFFERENT); } - private static T getBean(BeanFactory beanFactory, Class type) { + private static T getTemporaryBean(BeanFactory beanFactory, Class type) { if (!(beanFactory instanceof ConfigurableListableBeanFactory)) { return null; } @@ -346,10 +345,16 @@ public class EndpointWebMvcAutoConfiguration } // Use a temporary child bean factory to avoid instantiating the bean in the // parent (it won't be bound to the environment yet) - BeanDefinition definition = listable.getBeanDefinition(names[0]); - DefaultListableBeanFactory temp = new DefaultListableBeanFactory(listable); - temp.registerBeanDefinition(type.getName(), definition); - return temp.getBean(type); + return createTemporaryBean(type, listable, + listable.getBeanDefinition(names[0])); + } + + private static T createTemporaryBean(Class type, + ConfigurableListableBeanFactory parent, BeanDefinition definition) { + DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory( + parent); + beanFactory.registerBeanDefinition(type.getName(), definition); + return beanFactory.getBean(type); } private static Integer getPortProperty(Environment environment, String prefix) {