注解@Two中有two属性,在TestTwoAnno这个类初始化结束后,修改Two注解的two属性。
import com.enterprise.support.rocketmq.annotation.Two;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Map;
@Two
@Component
public class TestTwoAnno implements InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
Two annoTable = TestTwoAnno.class.getAnnotation(Two.class);
InvocationHandler invocationHandler = Proxy.getInvocationHandler(annoTable);
Field f = invocationHandler.getClass().getDeclaredField("memberValues");
f.setAccessible(true);
Map<String, Object> memberValues = (Map<String, Object>) f.get(invocationHandler);
memberValues.put("two", "2");
}
}