package me.test.db.router; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 设置作为数据源的Key。 * <p> * 使用方式有以下两种: * <ul> * <li>使用在方法级别上:只允许设置 value 属性,value值是SpEL表达式。SpEL表达式中可以: * <ul> * <li>以当前被AOP的对象为rootObject,以 <code>"attr"</code> 方式引用当前对象的属性</li> * <li>以 <code>"@springBeanName"</code> 方式引用Spring管理的bean</li> * <li>以 <code>"#methodParamName"</code> 方式引用被AOP方法的参数(按参数名称)</li> * <li>以 <code>"#p0"</code>、<code>"#a0"</code> 方式引用被AOP方法的参数(按参数位置)</li> * </ul> * </li> * <li>使用在方法参数上:则只允许可选设置 prefix 属性。数据库路由key的值 = prefix + paramValue.toString()。</li> * </ul> * </p> */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.PARAMETER }) public @interface DataSourceKey { /** SpEl表达式 */ String value() default ""; /** 加在参数值上的前缀 */ String prefix() default ""; }