Cambiar dinámicamente el valor en la anotación

Mi método aquí es cambiar dinámicamente el valor en la anotación del origen de datos


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());
    }
}

Vea los resultados.
Simón
En cuanto a cómo llamar el paquete a una clase de herramienta, ¡considérelo usted mismo!

Publicado 34 artículos originales · ganado elogios 0 · Vistas 3634

Supongo que te gusta

Origin blog.csdn.net/qq_43469899/article/details/100123733
Recomendado
Clasificación