From 38c9e7f629cb1574b2005e66f51041b68bb11458 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 10 Aug 2022 23:30:27 +0200 Subject: [PATCH] Polishing --- ...opedProxyBeanRegistrationAotProcessor.java | 39 +++++++------------ ...nitDestroyAnnotationBeanPostProcessor.java | 4 +- ...BeanFactoryInitializationAotProcessor.java | 3 +- .../aot/BeanRegistrationCodeFragments.java | 24 +++++------- .../aot/BeanRegistrationsAotProcessor.java | 4 +- .../support/DefaultListableBeanFactory.java | 8 ++-- .../factory/support/RootBeanDefinition.java | 6 +-- ...DefinitionMethodGeneratorFactoryTests.java | 4 +- ...BeanFactoryInitializationAotProcessor.java | 9 ++--- .../aop/framework/CglibProxyTests.java | 3 +- .../test/context/aot/TestClassScanner.java | 4 +- ...ansactionBeanRegistrationAotProcessor.java | 5 ++- 12 files changed, 47 insertions(+), 66 deletions(-) diff --git a/spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationAotProcessor.java b/spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationAotProcessor.java index 77873b7b36d..36d44764b15 100644 --- a/spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationAotProcessor.java +++ b/spring-aop/src/main/java/org/springframework/aop/scope/ScopedProxyBeanRegistrationAotProcessor.java @@ -46,24 +46,21 @@ import org.springframework.lang.Nullable; * @author Phillip Webb * @since 6.0 */ -class ScopedProxyBeanRegistrationAotProcessor - implements BeanRegistrationAotProcessor { +class ScopedProxyBeanRegistrationAotProcessor implements BeanRegistrationAotProcessor { - private static final Log logger = LogFactory - .getLog(ScopedProxyBeanRegistrationAotProcessor.class); + private static final Log logger = LogFactory.getLog(ScopedProxyBeanRegistrationAotProcessor.class); @Override public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { Class beanType = registeredBean.getBeanType().toClass(); if (beanType.equals(ScopedProxyFactoryBean.class)) { - String targetBeanName = getTargetBeanName( - registeredBean.getMergedBeanDefinition()); - BeanDefinition targetBeanDefinition = getTargetBeanDefinition( - registeredBean.getBeanFactory(), targetBeanName); + String targetBeanName = getTargetBeanName(registeredBean.getMergedBeanDefinition()); + BeanDefinition targetBeanDefinition = + getTargetBeanDefinition(registeredBean.getBeanFactory(), targetBeanName); if (targetBeanDefinition == null) { - logger.warn("Could not handle " + ScopedProxyFactoryBean.class.getSimpleName() - + ": no target bean definition found with name " + targetBeanName); + logger.warn("Could not handle " + ScopedProxyFactoryBean.class.getSimpleName() + + ": no target bean definition found with name " + targetBeanName); return null; } return BeanRegistrationAotContribution.ofBeanRegistrationCodeFragmentsCustomizer(codeFragments -> @@ -76,7 +73,7 @@ class ScopedProxyBeanRegistrationAotProcessor @Nullable private String getTargetBeanName(BeanDefinition beanDefinition) { Object value = beanDefinition.getPropertyValues().get("targetBeanName"); - return (value instanceof String) ? (String) value : null; + return (value instanceof String ? (String) value : null); } @Nullable @@ -90,23 +87,18 @@ class ScopedProxyBeanRegistrationAotProcessor } - private static class ScopedProxyBeanRegistrationCodeFragments - extends BeanRegistrationCodeFragments { + private static class ScopedProxyBeanRegistrationCodeFragments extends BeanRegistrationCodeFragments { private static final String REGISTERED_BEAN_PARAMETER_NAME = "registeredBean"; - private final RegisteredBean registeredBean; private final String targetBeanName; private final BeanDefinition targetBeanDefinition; - - ScopedProxyBeanRegistrationCodeFragments( - BeanRegistrationCodeFragments codeGenerator, - RegisteredBean registeredBean, String targetBeanName, - BeanDefinition targetBeanDefinition) { + ScopedProxyBeanRegistrationCodeFragments(BeanRegistrationCodeFragments codeGenerator, + RegisteredBean registeredBean, String targetBeanName, BeanDefinition targetBeanDefinition) { super(codeGenerator); this.registeredBean = registeredBean; @@ -114,17 +106,14 @@ class ScopedProxyBeanRegistrationAotProcessor this.targetBeanDefinition = targetBeanDefinition; } - @Override - public Class getTarget(RegisteredBean registeredBean, - Executable constructorOrFactoryMethod) { + public Class getTarget(RegisteredBean registeredBean, Executable constructorOrFactoryMethod) { return this.targetBeanDefinition.getResolvableType().toClass(); } @Override - public CodeBlock generateNewBeanDefinitionCode( - GenerationContext generationContext, ResolvableType beanType, - BeanRegistrationCode beanRegistrationCode) { + public CodeBlock generateNewBeanDefinitionCode(GenerationContext generationContext, + ResolvableType beanType, BeanRegistrationCode beanRegistrationCode) { return super.generateNewBeanDefinitionCode(generationContext, this.targetBeanDefinition.getResolvableType(), beanRegistrationCode); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java index 6b7da1d5b2c..28281b6dfc6 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java @@ -180,8 +180,8 @@ public class InitDestroyAnnotationBeanPostProcessor implements DestructionAwareB private String[] safeMerge(@Nullable String[] existingNames, Collection detectedElements) { Stream detectedNames = detectedElements.stream().map(LifecycleElement::getIdentifier); - Stream mergedNames = (existingNames != null - ? Stream.concat(Stream.of(existingNames), detectedNames) : detectedNames); + Stream mergedNames = (existingNames != null ? + Stream.concat(Stream.of(existingNames), detectedNames) : detectedNames); return mergedNames.distinct().toArray(String[]::new); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanFactoryInitializationAotProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanFactoryInitializationAotProcessor.java index fb9504992ed..2e0880ba40b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanFactoryInitializationAotProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanFactoryInitializationAotProcessor.java @@ -55,7 +55,6 @@ public interface BeanFactoryInitializationAotProcessor { * @return a {@link BeanFactoryInitializationAotContribution} or {@code null} */ @Nullable - BeanFactoryInitializationAotContribution processAheadOfTime( - ConfigurableListableBeanFactory beanFactory); + BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCodeFragments.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCodeFragments.java index bbfdc0f739f..b2469869654 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCodeFragments.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationCodeFragments.java @@ -103,9 +103,8 @@ public abstract class BeanRegistrationCodeFragments { * @return the generated code */ public CodeBlock generateSetBeanDefinitionPropertiesCode( - GenerationContext generationContext, - BeanRegistrationCode beanRegistrationCode, RootBeanDefinition beanDefinition, - Predicate attributeFilter) { + GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode, + RootBeanDefinition beanDefinition, Predicate attributeFilter) { return this.codeFragments.generateSetBeanDefinitionPropertiesCode( generationContext, beanRegistrationCode, beanDefinition, attributeFilter); @@ -122,9 +121,8 @@ public abstract class BeanRegistrationCodeFragments { * @see #generateInstanceSupplierCode */ public CodeBlock generateSetBeanInstanceSupplierCode( - GenerationContext generationContext, - BeanRegistrationCode beanRegistrationCode, CodeBlock instanceSupplierCode, - List postProcessors) { + GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode, + CodeBlock instanceSupplierCode, List postProcessors) { return this.codeFragments.generateSetBeanInstanceSupplierCode(generationContext, beanRegistrationCode, instanceSupplierCode, postProcessors); @@ -140,13 +138,12 @@ public abstract class BeanRegistrationCodeFragments { * than always needing an {@link InstanceSupplier} * @return the generated code */ - public CodeBlock generateInstanceSupplierCode(GenerationContext generationContext, - BeanRegistrationCode beanRegistrationCode, + public CodeBlock generateInstanceSupplierCode( + GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode, Executable constructorOrFactoryMethod, boolean allowDirectSupplierShortcut) { return this.codeFragments.generateInstanceSupplierCode(generationContext, - beanRegistrationCode, constructorOrFactoryMethod, - allowDirectSupplierShortcut); + beanRegistrationCode, constructorOrFactoryMethod, allowDirectSupplierShortcut); } /** @@ -155,11 +152,10 @@ public abstract class BeanRegistrationCodeFragments { * @param beanRegistrationCode the bean registration code * @return the generated code */ - public CodeBlock generateReturnCode(GenerationContext generationContext, - BeanRegistrationCode beanRegistrationCode) { + public CodeBlock generateReturnCode( + GenerationContext generationContext, BeanRegistrationCode beanRegistrationCode) { - return this.codeFragments.generateReturnCode(generationContext, - beanRegistrationCode); + return this.codeFragments.generateReturnCode(generationContext, beanRegistrationCode); } } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationsAotProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationsAotProcessor.java index 02f6c48f168..9388d799199 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationsAotProcessor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanRegistrationsAotProcessor.java @@ -32,9 +32,7 @@ import org.springframework.beans.factory.support.RegisteredBean; class BeanRegistrationsAotProcessor implements BeanFactoryInitializationAotProcessor { @Override - public BeanRegistrationsAotContribution processAheadOfTime( - ConfigurableListableBeanFactory beanFactory) { - + public BeanRegistrationsAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) { BeanDefinitionMethodGeneratorFactory beanDefinitionMethodGeneratorFactory = new BeanDefinitionMethodGeneratorFactory(beanFactory); Map registrations = new LinkedHashMap<>(); diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java index 5a64baa7f73..9f5c3b4ec37 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java @@ -815,13 +815,13 @@ public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFacto } BeanFactory parent = getParentBeanFactory(); - if (parent instanceof DefaultListableBeanFactory dlfb) { + if (parent instanceof DefaultListableBeanFactory dlbf) { // No bean definition found in this factory -> delegate to parent. - return dlfb.isAutowireCandidate(beanName, descriptor, resolver); + return dlbf.isAutowireCandidate(beanName, descriptor, resolver); } - else if (parent instanceof ConfigurableListableBeanFactory clfb) { + else if (parent instanceof ConfigurableListableBeanFactory clbf) { // If no DefaultListableBeanFactory, can't pass the resolver along. - return clfb.isAutowireCandidate(beanName, descriptor); + return clbf.isAutowireCandidate(beanName, descriptor); } else { return true; diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java index 7a50e6f0159..cd1223e8a9d 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java @@ -320,7 +320,7 @@ public class RootBeanDefinition extends AbstractBeanDefinition { * Specify a generics-containing target type of this bean definition, if known in advance. * @since 4.3.3 */ - public void setTargetType(ResolvableType targetType) { + public void setTargetType(@Nullable ResolvableType targetType) { this.targetType = targetType; } @@ -432,8 +432,8 @@ public class RootBeanDefinition extends AbstractBeanDefinition { @Override public void setInstanceSupplier(@Nullable Supplier instanceSupplier) { super.setInstanceSupplier(instanceSupplier); - Method factoryMethod = (instanceSupplier instanceof InstanceSupplier) - ? ((InstanceSupplier) instanceSupplier).getFactoryMethod() : null; + Method factoryMethod = (instanceSupplier instanceof InstanceSupplier ? + ((InstanceSupplier) instanceSupplier).getFactoryMethod() : null); if (factoryMethod != null) { setResolvedFactoryMethod(factoryMethod); } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorFactoryTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorFactoryTests.java index 4347460a2b7..20d6e367d23 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorFactoryTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanDefinitionMethodGeneratorFactoryTests.java @@ -166,6 +166,7 @@ class BeanDefinitionMethodGeneratorFactoryTests { return RegisteredBean.of(beanFactory, "test"); } + static class MockBeanRegistrationExcludeFilter implements BeanRegistrationAotProcessor, BeanRegistrationExcludeFilter, Ordered { @@ -182,8 +183,7 @@ class BeanDefinitionMethodGeneratorFactoryTests { } @Override - public BeanRegistrationAotContribution processAheadOfTime( - RegisteredBean registeredBean) { + public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { return null; } diff --git a/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java b/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java index b429e12ebb8..0484fecc84f 100644 --- a/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java +++ b/spring-context/src/main/java/org/springframework/context/aot/RuntimeHintsBeanFactoryInitializationAotProcessor.java @@ -46,16 +46,13 @@ import org.springframework.lang.Nullable; * * @author Brian Clozel */ -class RuntimeHintsBeanFactoryInitializationAotProcessor - implements BeanFactoryInitializationAotProcessor { +class RuntimeHintsBeanFactoryInitializationAotProcessor implements BeanFactoryInitializationAotProcessor { - private static final Log logger = LogFactory - .getLog(RuntimeHintsBeanFactoryInitializationAotProcessor.class); + private static final Log logger = LogFactory.getLog(RuntimeHintsBeanFactoryInitializationAotProcessor.class); @Override - public BeanFactoryInitializationAotContribution processAheadOfTime( - ConfigurableListableBeanFactory beanFactory) { + public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) { Map, RuntimeHintsRegistrar> registrars = AotServices .factories(beanFactory.getBeanClassLoader()).load(RuntimeHintsRegistrar.class).stream() .collect(LinkedHashMap::new, (map, item) -> map.put(item.getClass(), item), Map::putAll); diff --git a/spring-context/src/test/java/org/springframework/aop/framework/CglibProxyTests.java b/spring-context/src/test/java/org/springframework/aop/framework/CglibProxyTests.java index b1d1cd59438..05d74bbc3f3 100644 --- a/spring-context/src/test/java/org/springframework/aop/framework/CglibProxyTests.java +++ b/spring-context/src/test/java/org/springframework/aop/framework/CglibProxyTests.java @@ -87,8 +87,7 @@ public class CglibProxyTests extends AbstractAopProxyTests implements Serializab AdvisedSupport pc = new AdvisedSupport(ITestBean.class); pc.addAdvice(new NopInterceptor()); AopProxy aop = createAopProxy(pc); - assertThatExceptionOfType(AopConfigException.class).isThrownBy( - aop::getProxy); + assertThatExceptionOfType(AopConfigException.class).isThrownBy(aop::getProxy); } @Test diff --git a/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java b/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java index 139e8d42ea4..8a7208ea4a0 100644 --- a/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java +++ b/spring-test/src/main/java/org/springframework/test/context/aot/TestClassScanner.java @@ -129,11 +129,11 @@ class TestClassScanner { if (logger.isInfoEnabled()) { if (packageNames.length > 0) { logger.info("Scanning for Spring test classes in packages %s in classpath roots %s" - .formatted(Arrays.toString(packageNames), this.classpathRoots)); + .formatted(Arrays.toString(packageNames), this.classpathRoots)); } else { logger.info("Scanning for Spring test classes in all packages in classpath roots %s" - .formatted(this.classpathRoots)); + .formatted(this.classpathRoots)); } } diff --git a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java index 6a79565d0a2..4eba81592e4 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java +++ b/spring-tx/src/main/java/org/springframework/transaction/annotation/TransactionBeanRegistrationAotProcessor.java @@ -45,6 +45,7 @@ class TransactionBeanRegistrationAotProcessor implements BeanRegistrationAotProc private final static String JAKARTA_TRANSACTIONAL_CLASS_NAME = "jakarta.transaction.Transactional"; + @Override public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { Class beanClass = registeredBean.getBeanClass(); @@ -68,6 +69,7 @@ class TransactionBeanRegistrationAotProcessor implements BeanRegistrationAotProc }); } + private static class TransactionBeanRegistrationAotContribution implements BeanRegistrationAotContribution { private final Class beanClass; @@ -84,7 +86,8 @@ class TransactionBeanRegistrationAotProcessor implements BeanRegistrationAotProc return; } for (Class proxyInterface : proxyInterfaces) { - runtimeHints.reflection().registerType(proxyInterface, builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); + runtimeHints.reflection().registerType(proxyInterface, + builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_METHODS)); } runtimeHints.proxies().registerJdkProxy(AopProxyUtils.completeJdkProxyInterfaces(proxyInterfaces)); }