All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.zodiac.datasource.strategy.DataSourceSwitchStrategyMatcher Maven / Gradle / Ivy

The newest version!
package org.zodiac.datasource.strategy;

import org.zodiac.core.aop.MethodInterceptorContext;
import org.zodiac.datasource.DynamicDataSourceObject;
import org.zodiac.datasource.exception.DataSourceNotFoundException;

import java.lang.reflect.Method;

/**
 * 数据源切换策略,可通过此接口来自定义数据源切换的方式。
 *
 */
public interface DataSourceSwitchStrategyMatcher {

    /**
     * 匹配类和方法,返回是否需要进行数据源切换。
     *
     * @param target 类
     * @param method 方法
     * @return 是否需要进行数据源切换
     */
    boolean match(Class target, Method method);

    /**
     * 获取数据源切换策略。
     * 
     * @param context aop上下文
     * @return 切换策略
     */
    Strategy getStrategy(MethodInterceptorContext context);

    /**
     * 数据源切换策略。
     */
    interface Strategy {

        /**
         * 是否使用默认数据源,与 {@link Strategy#getDataSourceId()}互斥,只在{@link Strategy#getDataSourceId()}不为空时生效。
         *
         * @return 是否使用默认数据源
         */
        boolean isUseDefaultDataSource();

        /**
         * 当数据源不存在时,是否回退为默认数据源,如果为false,当数据源不存在时,将会抛出异常{@link DataSourceNotFoundException}。
         *
         * @return 是否使用默认数据源
         * @see DataSourceNotFoundException
         */
        boolean isFallbackDefault();

        /**
         * @return 要切换数据源的id。
         * @see DynamicDataSourceObject#getId()
         * @see org.zodiac.datasource.switcher.DataSourceSwitcher#use(String)
         */
        String getDataSourceId();

        /**
         * @return 指定数据库
         */
        String getDatabase();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy