/** * 注册规则验证器 <功能详细描述> * * @param ruleValidator [参数说明] * @return void [返回类型说明] * @exception throws [异常类型] [异常说明] * @see [类、类#方法、类#成员] */ public void registeRuleRegister( @SuppressWarnings("rawtypes") Collection<RuleRegister> ruleValidators) { if (!CollectionUtils.isEmpty(ruleValidators)) { for (RuleRegister<? extends Rule> ruleRegisterTemp : ruleValidators) { ruleRegisterMap.put(ruleRegisterTemp.ruleType(), ruleRegisterTemp); } } }
/** * 将规则注册入规则容器中 <功能详细描述> * * @param spRule [参数说明] * @return void [返回类型说明] * @exception throws [异常类型] [异常说明] * @see [类、类#方法、类#成员] */ @Transactional public Rule registeRule(SimplePersistenceRule spRule) { if (spRule == null || StringUtils.isEmpty(spRule.getRule()) || StringUtils.isEmpty(spRule.getServiceType()) || spRule.getRuleType() == null) { throw new RuleRegisteException("spRule or rule or serviceType or ruleType is null"); } RuleRegister<? extends Rule> ruleRegisterTemp = ruleRegisterMap.get(spRule.getRuleType()); if (ruleRegisterTemp == null) { throw new RuleRegisteException( "ruleType:{} RuleRegister not exist.", spRule.getRuleType().toString()); } // 调用对应注册器方法,将规则注册入容器中 final Rule realRule = ruleRegisterTemp.registe(spRule); if (realRule != null) { if (TransactionSynchronizationManager.isSynchronizationActive()) { // 如果在事务逻辑中执行 TransactionSynchronizationManager.registerSynchronization( new TransactionSynchronizationAdapter() { @Override public void afterCommit() { putInCache(realRule, true); } }); } else { // 如果在非事务中执行 putInCache(realRule, true); } } else { throw new RuleRegisteException( "ruleType:{} RuleRegister call registe return null realRule.", spRule.getRuleType().toString()); } return realRule; }