Consistently use DefaultParameterNameDiscoverer.getSharedInstance()

This includes MethodParameter resolving getParameterName() by default now.
initParameterNameDiscovery(null) can be used to suppress such resolution.

Closes gh-36024
This commit is contained in:
Juergen Hoeller
2025-12-17 13:39:02 +01:00
parent ec6b7730a2
commit c813577908
19 changed files with 61 additions and 41 deletions
@@ -39,21 +39,24 @@ class CacheEvaluationContextFactory {
private @Nullable Supplier<ParameterNameDiscoverer> parameterNameDiscoverer;
CacheEvaluationContextFactory(StandardEvaluationContext originalContext) {
this.originalContext = originalContext;
}
public void setParameterNameDiscoverer(Supplier<ParameterNameDiscoverer> parameterNameDiscoverer) {
this.parameterNameDiscoverer = parameterNameDiscoverer;
}
public ParameterNameDiscoverer getParameterNameDiscoverer() {
if (this.parameterNameDiscoverer == null) {
this.parameterNameDiscoverer = SingletonSupplier.of(new DefaultParameterNameDiscoverer());
this.parameterNameDiscoverer = SingletonSupplier.of(DefaultParameterNameDiscoverer.getSharedInstance());
}
return this.parameterNameDiscoverer.get();
}
/**
* Creates a {@link CacheEvaluationContext} for the specified operation.
* @param rootObject the {@code root} object to use for the context
@@ -38,8 +38,6 @@ public abstract class CachedExpressionEvaluator {
private final SpelExpressionParser parser;
private final ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
/**
* Create a new instance with the default {@link SpelExpressionParser}.
@@ -69,7 +67,7 @@ public abstract class CachedExpressionEvaluator {
* @since 4.3
*/
protected ParameterNameDiscoverer getParameterNameDiscoverer() {
return this.parameterNameDiscoverer;
return DefaultParameterNameDiscoverer.getSharedInstance();
}
/**
@@ -183,7 +183,8 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
private boolean exposeClassDescriptor = false;
private @Nullable ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
private @Nullable ParameterNameDiscoverer parameterNameDiscoverer =
DefaultParameterNameDiscoverer.getSharedInstance();
/**
@@ -507,8 +508,8 @@ public abstract class AbstractReflectiveMBeanInfoAssembler extends AbstractMBean
* @return the {@code MBeanParameterInfo} array
*/
protected MBeanParameterInfo[] getOperationParameters(Method method, String beanKey) {
ParameterNameDiscoverer paramNameDiscoverer = getParameterNameDiscoverer();
@Nullable String[] paramNames = (paramNameDiscoverer != null ? paramNameDiscoverer.getParameterNames(method) : null);
ParameterNameDiscoverer pnd = getParameterNameDiscoverer();
@Nullable String[] paramNames = (pnd != null ? pnd.getParameterNames(method) : null);
if (paramNames == null) {
return new MBeanParameterInfo[0];
}
@@ -87,7 +87,7 @@ public class MethodValidationAdapter implements MethodValidator {
private MessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver();
private ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
private ParameterNameDiscoverer parameterNameDiscoverer = DefaultParameterNameDiscoverer.getSharedInstance();
private ObjectNameResolver objectNameResolver = defaultObjectNameResolver;