注釈付きデータソースの値を内部的に切り替えるためのツールとメソッド

最後の記事はmainメソッドでテストされました。この記事では、最後にブロガーにサービスを提供します。これはツールクラスにカプセル化されており、直接呼び出すことができます!コードについて言うことはあまりありません:

public class DataSourceSwitch {
    @DataSource(value = "slave1")
    public static void change(String data)throws Exception{
        Method method = DataSourceSwitch.class.getMethod("change", 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 = data;
        memberValues.put("value",val);
        System.out.println("改变后"+dataSource);
    }
}

ブロガーは、主に次の理由により、ここで何度もエラーを報告しました:1:あなたの値が誤って送信された、2:より多くのスペースがあり、自分でそれを把握できる

メソッドの使用

DataSourceSwitch.change("druid");

内部は私が切り替えたい値の値です、私はそれが切り替えられることができることをテストしました
サイモンスイッチデータソースツールクラス結果グラフ

公開された34元の記事 ウォンの賞賛0 ビュー3634

おすすめ

転載: blog.csdn.net/qq_43469899/article/details/100130337