diff --git a/mybatis-plus-ext-core/mybatis-plus-ext-condition/src/main/java/com/tangzc/mpe/condition/DynamicConditionInterceptor.java b/mybatis-plus-ext-core/mybatis-plus-ext-condition/src/main/java/com/tangzc/mpe/condition/DynamicConditionInterceptor.java index 99368cce9f0143e6d3d413d68b522f0c5c2940cf..8f77c06b4998429f3bea0121157b83b7a3e17ef7 100644 --- a/mybatis-plus-ext-core/mybatis-plus-ext-condition/src/main/java/com/tangzc/mpe/condition/DynamicConditionInterceptor.java +++ b/mybatis-plus-ext-core/mybatis-plus-ext-condition/src/main/java/com/tangzc/mpe/condition/DynamicConditionInterceptor.java @@ -139,8 +139,21 @@ public class DynamicConditionInterceptor extends JsqlParserSupport implements In for (DynamicConditionDescription description : descriptions) { Field entityField = description.getEntityField(); Class handlerClass = description.getDynamicCondition().value(); - IDynamicConditionHandler conditionHandler = SpringContextUtil.getApplicationContext().getBean(handlerClass); - + // IDynamicConditionHandler conditionHandler = SpringContextUtil.getApplicationContext().getBean(handlerClass); + + String className = handlerClass.getName(); + ApplicationContext context = SpringContextUtil.getApplicationContext(); + ClassLoader classLoader = context.getClassLoader(); + if (classLoader != null) { + conditionHandler = (IDynamicConditionHandler)context.getBean(classLoader.loadClass(className)); + }else{ + String[] split = className.split("\\."); + String beanName = split[split.length - 1]; + char[] cs = beanName.toCharArray(); + cs[0] += 32; + beanName = String.valueOf(cs); + conditionHandler = (IDynamicConditionHandler)context.getBean(beanName); + } // 表示该条件跳过,不参与过滤 if (!conditionHandler.enable()) { continue; @@ -168,6 +181,8 @@ public class DynamicConditionInterceptor extends JsqlParserSupport implements In } } catch (JSQLParserException e) { e.printStackTrace(); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); } return where; }