From f92b60c08f462bb8867208d7d65b57f0623a6de9 Mon Sep 17 00:00:00 2001 From: "zheng.ren01@mljr.com" Date: Sat, 20 Jul 2019 17:02:36 +0800 Subject: [PATCH] Only invoke getInterfaceMethodIfPossible() when security manager is used Prior to this commit, AbstractAutowireCapableBeanFactory's invokeCustomInitMethod() method invoked ClassUtils.getInterfaceMethodIfPossible() even if the security manager was not being used. This commit ensures that getInterfaceMethodIfPossible() is only invoked if the security manager is used. Closes gh-23323 --- .../factory/support/AbstractAutowireCapableBeanFactory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java index caa76ad2603..1fe4f2ebc10 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java @@ -1882,9 +1882,10 @@ public abstract class AbstractAutowireCapableBeanFactory extends AbstractBeanFac if (logger.isTraceEnabled()) { logger.trace("Invoking init method '" + initMethodName + "' on bean with name '" + beanName + "'"); } - Method methodToInvoke = ClassUtils.getInterfaceMethodIfPossible(initMethod); if (System.getSecurityManager() != null) { + Method methodToInvoke = ClassUtils.getInterfaceMethodIfPossible(initMethod); + AccessController.doPrivileged((PrivilegedAction) () -> { ReflectionUtils.makeAccessible(methodToInvoke); return null;