diff --git a/src/main/java/org/apache/ibatis/reflection/DefaultReflectorFactory.java b/src/main/java/org/apache/ibatis/reflection/DefaultReflectorFactory.java index d1fdff88dd4..0e826437644 100644 --- a/src/main/java/org/apache/ibatis/reflection/DefaultReflectorFactory.java +++ b/src/main/java/org/apache/ibatis/reflection/DefaultReflectorFactory.java @@ -20,7 +20,7 @@ import java.util.concurrent.ConcurrentMap; public class DefaultReflectorFactory implements ReflectorFactory { - private boolean classCacheEnabled = true; + private volatile boolean classCacheEnabled = true; private final ConcurrentMap reflectorMap = new ConcurrentHashMap<>(); public DefaultReflectorFactory() { @@ -33,6 +33,10 @@ public boolean isClassCacheEnabled() { @Override public void setClassCacheEnabled(boolean classCacheEnabled) { + boolean previous = this.classCacheEnabled; + if (previous != classCacheEnabled) { + reflectorMap.clear(); + } this.classCacheEnabled = classCacheEnabled; }