第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何創(chuàng)建一個(gè) bytebuddy 代理來(lái)攔截帶注釋字段的字段設(shè)置器?

如何創(chuàng)建一個(gè) bytebuddy 代理來(lái)攔截帶注釋字段的字段設(shè)置器?

不負(fù)相思意 2023-12-13 15:00:14
我想做的基本上是將類的字段與注釋相匹配,并攔截該字段的 getter 和 setter。 public class Foo {    @Sensitive    private String Blah;這是我的代理的代碼:    private static AgentBuilder createAgent() {        return new AgentBuilder                .Default()                .with(AgentBuilder.RedefinitionStrategy.RETRANSFORMATION)                .type(ElementMatchers.is(FieldTypeMatcher.class).and(ElementMatchers.isAnnotatedWith(Foo.class)))                .transform(((builder, typeDescription, classLoader, module) ->                        builder                        .method(method -> method.getActualName().contains(typeDescription.getActualName()))                        .intercept(Advice.to(Interceptor.class))                ));    }我雖然可以將字段的名稱與方法的簽名相匹配,但我沒(méi)有運(yùn)氣。
查看完整描述

1 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

我假設(shè)Foo有一個(gè) getter 和 setter Blah?


在這種情況下,我建議使用自定義ElementMatcher實(shí)現(xiàn),例如:


class FieldMatcher implements ElementMatcher<MethodDescription> {

  @Override

  public boolean matches(MethodDescription target) {

    String fieldName;

    if (target.getName().startsWith("set") || target.getName().startsWith("get")) {

      fieldName = target.substring(3, 4).toLowerCase() + target.substring(4);

    } else if (target.getName().startsWith("is")) {

      fieldName = target.substring(2, 3).toLowerCase() + target.substring(3);

    } else {

      return false;

    }

    target.getDeclaringType()

      .getDeclaredFields()

      .filter(named)

      .getOnly()

      .getDeclaredAnnotations()

      .isAnnotationPresent(Sensitive.class);

  }

}

該匹配器檢查方法是否是 getter 或 setter,找到相應(yīng)的字段并檢查其上是否存在注釋。


查看完整回答
反對(duì) 回復(fù) 2023-12-13
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)