@@ -295,15 +295,7 @@ protected final SourceClass doProcessConfigurationClass(ConfigurationClass confi
295295 }
296296
297297 // Process default methods on interfaces
298- for (SourceClass ifc : sourceClass .getInterfaces ()) {
299- beanMethods = ifc .getMetadata ().getAnnotatedMethods (Bean .class .getName ());
300- for (MethodMetadata methodMetadata : beanMethods ) {
301- if (!methodMetadata .isAbstract ()) {
302- // A default method or other concrete method on a Java 8+ interface...
303- configClass .addBeanMethod (new BeanMethod (methodMetadata , configClass ));
304- }
305- }
306- }
298+ processInterfaces (configClass , sourceClass );
307299
308300 // Process superclass, if any
309301 if (sourceClass .getMetadata ().hasSuperClass ()) {
@@ -321,8 +313,6 @@ protected final SourceClass doProcessConfigurationClass(ConfigurationClass confi
321313
322314 /**
323315 * Register member (nested) classes that happen to be configuration classes themselves.
324- * @param sourceClass the source class to process
325- * @throws IOException if there is any problem reading metadata from a member class
326316 */
327317 private void processMemberClasses (ConfigurationClass configClass , SourceClass sourceClass ) throws IOException {
328318 for (SourceClass memberClass : sourceClass .getMemberClasses ()) {
@@ -344,6 +334,22 @@ private void processMemberClasses(ConfigurationClass configClass, SourceClass so
344334 }
345335 }
346336
337+ /**
338+ * Register default methods on interfaces implemented by the configuration class.
339+ */
340+ private void processInterfaces (ConfigurationClass configClass , SourceClass sourceClass ) throws IOException {
341+ for (SourceClass ifc : sourceClass .getInterfaces ()) {
342+ Set <MethodMetadata > beanMethods = ifc .getMetadata ().getAnnotatedMethods (Bean .class .getName ());
343+ for (MethodMetadata methodMetadata : beanMethods ) {
344+ if (!methodMetadata .isAbstract ()) {
345+ // A default method or other concrete method on a Java 8+ interface...
346+ configClass .addBeanMethod (new BeanMethod (methodMetadata , configClass ));
347+ }
348+ }
349+ processInterfaces (configClass , ifc );
350+ }
351+ }
352+
347353 /**
348354 * Process the given <code>@PropertySource</code> annotation metadata.
349355 * @param propertySource metadata for the <code>@PropertySource</code> annotation found
0 commit comments