我这边的方法是动态的切换数据源注解里面的值
public class DataSourceSwitch {
//这个是我数据源注解的注解
@DataSource(value = "slave1")
public static void main(String[] args)throws Exception{
Method method = DataSourceSwitch.class.getMethod("main", String[].class);
DataSource dataSource = method.getAnnotation(DataSource.class);
if (dataSource ==null){
throw new RuntimeException("请添加数据源");
}
InvocationHandler invocationHandler = Proxy.getInvocationHandler(dataSource);
Field value = invocationHandler.getClass().getDeclaredField("memberValues");
value.setAccessible(true);
Map<String,Object> memberValues = (Map<String, Object>) value.get(invocationHandler);
String val = (String) memberValues.get("value");
System.out.println("改变前"+val);
val = "druid";
memberValues.put("value",val);
System.out.println("改变后"+dataSource.value());
}
}
请看结果
至于怎么调用封装成工具类自行考虑!