Avoid ambiguous call with BeanInstanceSupplier#withGenerator
Previously, BeanInstanceSupplier had three variants of the `withGenerator` callback, one with a bi function, one with a function, and with a supplier. This could lead to compilation failure when the target type has a method with the same name and a number of arguments that match another variant. It turns out the supplier-based variant is only used a shortcut. This commit deprecates it and update ghe code generation to use the function instead. Closes gh-29278
This commit is contained in:
@@ -172,7 +172,9 @@ public final class BeanInstanceSupplier<T> 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<T> withGenerator(ThrowingSupplier<T> generator) {
|
||||
Assert.notNull(generator, "'generator' must not be null");
|
||||
return new BeanInstanceSupplier<>(this.lookup,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user