diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java index 4d487d2b57..2521a0f2f5 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -225,7 +225,6 @@ class ConfigurationClassEnhancer { }; return new TransformingClassGenerator(cg, transformer); } - } diff --git a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java index c150656cac..6396f826ea 100644 --- a/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -387,11 +387,11 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo }); // Detect any custom bean name generation strategy supplied through the enclosing application context - SingletonBeanRegistry sbr = null; - if (registry instanceof SingletonBeanRegistry _sbr) { - sbr = _sbr; + SingletonBeanRegistry singletonRegistry = null; + if (registry instanceof SingletonBeanRegistry sbr) { + singletonRegistry = sbr; if (!this.localBeanNameGeneratorSet) { - BeanNameGenerator generator = (BeanNameGenerator) sbr.getSingleton( + BeanNameGenerator generator = (BeanNameGenerator) singletonRegistry.getSingleton( AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR); if (generator != null) { this.componentScanBeanNameGenerator = generator; @@ -452,8 +452,8 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo while (!candidates.isEmpty()); // Register the ImportRegistry as a bean in order to support ImportAware @Configuration classes - if (sbr != null && !sbr.containsSingleton(IMPORT_REGISTRY_BEAN_NAME)) { - sbr.registerSingleton(IMPORT_REGISTRY_BEAN_NAME, parser.getImportRegistry()); + if (singletonRegistry != null && !singletonRegistry.containsSingleton(IMPORT_REGISTRY_BEAN_NAME)) { + singletonRegistry.registerSingleton(IMPORT_REGISTRY_BEAN_NAME, parser.getImportRegistry()); } // Store the PropertySourceDescriptors to contribute them Ahead-of-time if necessary @@ -552,6 +552,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo } @Override + @Nullable public PropertyValues postProcessProperties(@Nullable PropertyValues pvs, Object bean, String beanName) { // Inject the BeanFactory before AutowiredAnnotationBeanPostProcessor's // postProcessProperties method attempts to autowire other configuration beans. @@ -647,9 +648,9 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo } return mappings; } - } + private static class PropertySourcesAotContribution implements BeanFactoryInitializationAotContribution { private static final String ENVIRONMENT_VARIABLE = "environment"; @@ -761,17 +762,18 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo return nonNull.get(); } } - } + private static class ConfigurationClassProxyBeanRegistrationCodeFragments extends BeanRegistrationCodeFragmentsDecorator { private final RegisteredBean registeredBean; private final Class proxyClass; - public ConfigurationClassProxyBeanRegistrationCodeFragments(BeanRegistrationCodeFragments codeFragments, - RegisteredBean registeredBean) { + public ConfigurationClassProxyBeanRegistrationCodeFragments( + BeanRegistrationCodeFragments codeFragments, RegisteredBean registeredBean) { + super(codeFragments); this.registeredBean = registeredBean; this.proxyClass = registeredBean.getBeanType().toClass(); @@ -780,6 +782,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo @Override public CodeBlock generateSetBeanDefinitionPropertiesCode(GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode, RootBeanDefinition beanDefinition, Predicate attributeFilter) { + CodeBlock.Builder code = CodeBlock.builder(); code.add(super.generateSetBeanDefinitionPropertiesCode(generationContext, beanRegistrationCode, beanDefinition, attributeFilter)); @@ -790,8 +793,7 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo @Override public CodeBlock generateInstanceSupplierCode(GenerationContext generationContext, - BeanRegistrationCode beanRegistrationCode, - boolean allowDirectSupplierShortcut) { + BeanRegistrationCode beanRegistrationCode, boolean allowDirectSupplierShortcut) { Executable executableToUse = proxyExecutable(generationContext.getRuntimeHints(), this.registeredBean.resolveConstructorOrFactoryMethod()); @@ -812,7 +814,6 @@ public class ConfigurationClassPostProcessor implements BeanDefinitionRegistryPo } return userExecutable; } - } } diff --git a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorAotContributionTests.java b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorAotContributionTests.java index 92c82717ac..9b7777cbf9 100644 --- a/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorAotContributionTests.java +++ b/spring-context/src/test/java/org/springframework/context/annotation/ConfigurationClassPostProcessorAotContributionTests.java @@ -101,8 +101,8 @@ class ConfigurationClassPostProcessorAotContributionTests { initializer.accept(freshBeanFactory); freshContext.refresh(); assertThat(freshBeanFactory.getBeanPostProcessors()).filteredOn(ImportAwareAotBeanPostProcessor.class::isInstance) - .singleElement().satisfies(postProcessor -> assertPostProcessorEntry(postProcessor, ImportAwareConfiguration.class, - ImportConfiguration.class)); + .singleElement().satisfies(postProcessor -> + assertPostProcessorEntry(postProcessor, ImportAwareConfiguration.class, ImportConfiguration.class)); freshContext.close(); }); } @@ -245,6 +245,7 @@ class ConfigurationClassPostProcessorAotContributionTests { } } + @Nested class PropertySourceTests { @@ -410,9 +411,9 @@ class ConfigurationClassPostProcessorAotContributionTests { @PropertySource("classpath:org/springframework/context/annotation/p?.properties") static class PropertySourceWithWildcardLocationPatternConfiguration { } - } + @Nested class ConfigurationClassProxyTests { @@ -432,15 +433,14 @@ class ConfigurationClassPostProcessorAotContributionTests { getRegisteredBean(CglibConfiguration.class))).isNotNull(); } - private RegisteredBean getRegisteredBean(Class bean) { this.beanFactory.registerBeanDefinition("test", new RootBeanDefinition(bean)); this.processor.postProcessBeanFactory(this.beanFactory); return RegisteredBean.of(this.beanFactory, "test"); } - } + @Nullable private BeanFactoryInitializationAotContribution getContribution(Class... types) { DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); @@ -458,8 +458,8 @@ class ConfigurationClassPostProcessorAotContributionTests { .containsExactly(entry(key.getName(), value.getName())); } - static class CustomPropertySourcesFactory extends DefaultPropertySourceFactory { + static class CustomPropertySourcesFactory extends DefaultPropertySourceFactory { } } diff --git a/spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java b/spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java index 9bd022ccee..33c44706d6 100644 --- a/spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java +++ b/spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java @@ -75,7 +75,7 @@ public class ReflectUtils { Throwable throwable = null; try { classLoaderDefineClass = ClassLoader.class.getDeclaredMethod("defineClass", - String.class, byte[].class, Integer.TYPE, Integer.TYPE, ProtectionDomain.class); + String.class, byte[].class, Integer.TYPE, Integer.TYPE, ProtectionDomain.class); } catch (Throwable t) { classLoaderDefineClass = null;