多租户生效问题

Blade 未结 1 1117
next
next 剑圣 2021-03-04 20:12
MybatisPlusConfiguration
/**
 * 租户处理器
 */
@Bean
@ConditionalOnMissingBean(TenantLineHandler.class)
public TenantLineHandler tenantLineHandler() {
   return new TenantLineHandler() {
      @Override
      public Expression getTenantId() {
         return new StringValue(Func.toStr(AuthUtil.getTenantId(), BladeConstant.ADMIN_TENANT_ID));
      }

      @Override
      public boolean ignoreTable(String tableName) {
         return true;
      }
   };
}

/**
 * 租户拦截器
 */
@Bean
@ConditionalOnMissingBean(TenantLineInnerInterceptor.class)
public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantLineHandler tenantHandler) {
   return new TenantLineInnerInterceptor(tenantHandler);
}
TenantConfiguration
/**
 * 自定义多租户处理器
 *
 * @param tenantProperties 多租户配置类
 * @return TenantHandler
 */
@Bean
@ConditionalOnMissingBean(TenantLineHandler.class)
public TenantLineHandler bladeTenantHandler(BladeTenantProperties tenantProperties) {
   return new BladeTenantHandler(tenantProperties);
}

/**
 * 自定义租户拦截器
 *
 * @param tenantHandler    多租户处理器
 * @param tenantProperties 多租户配置类
 * @return BladeTenantInterceptor
 */
@Bean
@ConditionalOnMissingBean(TenantLineInnerInterceptor.class)
public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantLineHandler tenantHandler, BladeTenantProperties tenantProperties) {
   BladeTenantInterceptor tenantInterceptor = new BladeTenantInterceptor();
   tenantInterceptor.setTenantLineHandler(tenantHandler);
   tenantInterceptor.setTenantProperties(tenantProperties);
   return tenantInterceptor;
}


这二个加载过程是是否有冲突 导致其中一个失效

TenantLineInnerInterceptor
TenantLineHandler

1条回答
  • 2021-03-04 21:44

    不会冲突,因为加了@ConditionalOnMissingBean注解,谁先初始化那系统就认谁。

    TenantConfiguration优先级高,如果引入了租户依赖,那就会走TenantConfiguration的配置,如果没有租户依赖,那就只有MybatisPlusConfiguration自然也就走MybatisPlusConfiguration的配置了。

    0 讨论(1)
提交回复