diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java index 020164115da..291cbba4f2b 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanInstanceSupplier.java @@ -172,7 +172,9 @@ public final class BeanInstanceSupplier extends AutowiredElementResolver impl * {@code generator} supplier to instantiate the underlying bean. * @param generator a {@link ThrowingSupplier} to instantiate the underlying bean * @return a new {@link BeanInstanceSupplier} instance with the specified generator + * @deprecated in favor of {@link #withGenerator(ThrowingFunction)} */ + @Deprecated(since = "6.0.11", forRemoval = true) public BeanInstanceSupplier withGenerator(ThrowingSupplier generator) { Assert.notNull(generator, "'generator' must not be null"); return new BeanInstanceSupplier<>(this.lookup, diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java index 171a9206128..bd1ff37f77f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGenerator.java @@ -220,7 +220,8 @@ class InstanceSupplierCodeGenerator { CodeBlock.Builder code = CodeBlock.builder(); code.add("$T.<$T>forFactoryMethod($T.class, $S)", BeanInstanceSupplier.class, suppliedType, declaringClass, factoryMethod.getName()); - code.add(".withGenerator($T::$L)", declaringClass, factoryMethod.getName()); + code.add(".withGenerator(($L) -> $T.$L())", REGISTERED_BEAN_PARAMETER_NAME, + declaringClass, factoryMethod.getName()); return code.build(); } diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanInstanceSupplierTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanInstanceSupplierTests.java index ce613cc0088..422de9d4420 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanInstanceSupplierTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/BeanInstanceSupplierTests.java @@ -186,6 +186,8 @@ class BeanInstanceSupplierTests { } @Test + @Deprecated + @SuppressWarnings("removal") void withGeneratorWhenSupplierIsNullThrowsException() { BeanInstanceSupplier resolver = BeanInstanceSupplier .forConstructor(); @@ -245,6 +247,8 @@ class BeanInstanceSupplierTests { } @Test + @Deprecated + @SuppressWarnings("removal") void getWithGeneratorCallsSupplier() throws Exception { BeanRegistrar registrar = new BeanRegistrar(SingleArgConstructor.class); this.beanFactory.registerSingleton("one", "1"); diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java index 43e21771651..b849b370220 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/aot/InstanceSupplierCodeGeneratorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 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. @@ -223,7 +223,7 @@ class InstanceSupplierCodeGeneratorTests { assertThat(bean).isInstanceOf(Integer.class); assertThat(bean).isEqualTo(42); assertThat(compiled.getSourceFile()) - .contains("SimpleConfiguration::integerBean"); + .contains("(registeredBean) -> SimpleConfiguration.integerBean()"); }); assertThat(getReflectionHints().getTypeHint(SimpleConfiguration.class)) .satisfies(hasMethodWithMode(ExecutableMode.INTROSPECT));