diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java index c05a966b0b3..3d624b076ad 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertyValueCodeGenerator.java @@ -449,17 +449,17 @@ class BeanDefinitionPropertyValueCodeGenerator { return CodeBlock.of("new $T($L)", LinkedHashSet.class, generateCollectionOf(set, List.class, elementType)); } + return super.generateCollectionCode(elementType, orderForCodeConsistency(set)); + } + + private Set orderForCodeConsistency(Set set) { try { - set = orderForCodeConsistency(set); + return new TreeSet(set); } catch (ClassCastException ex) { // If elements are not comparable, just keep the original set + return set; } - return super.generateCollectionCode(elementType, set); - } - - private Set orderForCodeConsistency(Set set) { - return new TreeSet(set); } } @@ -515,7 +515,13 @@ class BeanDefinitionPropertyValueCodeGenerator { } private Map orderForCodeConsistency(Map map) { - return new TreeMap<>(map); + try { + return new TreeMap<>(map); + } + catch (ClassCastException ex) { + // If elements are not comparable, just keep the original map + return map; + } } private CodeBlock generateLinkedHashMapCode(Map map,