@@ -315,16 +315,15 @@ public static ManagementServerPort get(Environment environment,
315315 Integer serverPort = getPortProperty (environment , "server." );
316316 if (serverPort == null && hasCustomBeanDefinition (beanFactory ,
317317 ServerProperties .class , ServerPropertiesAutoConfiguration .class )) {
318- ServerProperties bean = getBean (beanFactory , ServerProperties .class );
319- serverPort = bean .getPort ();
318+ serverPort = getTemporaryBean (beanFactory , ServerProperties .class )
319+ .getPort ();
320320 }
321321 Integer managementPort = getPortProperty (environment , "management." );
322322 if (managementPort == null && hasCustomBeanDefinition (beanFactory ,
323323 ManagementServerProperties .class ,
324324 ManagementServerPropertiesAutoConfiguration .class )) {
325- ManagementServerProperties bean = getBean (beanFactory ,
326- ManagementServerProperties .class );
327- managementPort = bean .getPort ();
325+ managementPort = getTemporaryBean (beanFactory ,
326+ ManagementServerProperties .class ).getPort ();
328327 }
329328 if (managementPort != null && managementPort < 0 ) {
330329 return DISABLE ;
@@ -335,7 +334,7 @@ public static ManagementServerPort get(Environment environment,
335334 : DIFFERENT );
336335 }
337336
338- private static <T > T getBean (BeanFactory beanFactory , Class <T > type ) {
337+ private static <T > T getTemporaryBean (BeanFactory beanFactory , Class <T > type ) {
339338 if (!(beanFactory instanceof ConfigurableListableBeanFactory )) {
340339 return null ;
341340 }
@@ -346,10 +345,16 @@ private static <T> T getBean(BeanFactory beanFactory, Class<T> type) {
346345 }
347346 // Use a temporary child bean factory to avoid instantiating the bean in the
348347 // parent (it won't be bound to the environment yet)
349- BeanDefinition definition = listable .getBeanDefinition (names [0 ]);
350- DefaultListableBeanFactory temp = new DefaultListableBeanFactory (listable );
351- temp .registerBeanDefinition (type .getName (), definition );
352- return temp .getBean (type );
348+ return createTemporaryBean (type , listable ,
349+ listable .getBeanDefinition (names [0 ]));
350+ }
351+
352+ private static <T > T createTemporaryBean (Class <T > type ,
353+ ConfigurableListableBeanFactory parent , BeanDefinition definition ) {
354+ DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory (
355+ parent );
356+ beanFactory .registerBeanDefinition (type .getName (), definition );
357+ return beanFactory .getBean (type );
353358 }
354359
355360 private static Integer getPortProperty (Environment environment , String prefix ) {
0 commit comments