簡體   English   中英

Spring修改由自定義批注標記的任何類的字段

[英]Spring Modify a field of any class that marked by a custom annotation

我想用我的自定義注釋標記一個類的字段。 每當調用任何方法時,我都希望對該字段進行一些修改。

public class Message{
    public Integer id;

    @FreeText   // this is my custom annotation 
    public String htmlMsg;
    public String textMsg ;
 }

該注釋(@FreeText)可以在任何類中使用。 在seasar框架中,我可以通過創建一個攔截器並重寫invoke方法來做到這一點。 我可以獲取此類的對象,並找到標有我的注釋的字段並進行修改。 但是,我找不到在春季進行的方法。 在春季,我發現了諸如MethodInvocationInterceptor之類的方法,但是我不知道如何實現它。 您能在春季建議任何方法嗎?

Seasar2和Spring非常接近。 我沒有測試過,但是您可以做這樣的事情。 首先創建FreeText自定義注釋

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Documented
public @interface FreeText {}

然后創建以下攔截器

public class EncryptSensitiveDataInterceptor extends MethodInterceptor {
@Override
public Object invoke(MethodInvocation in) throws Throwable {

    Object[] params = in.getArguments();

    Object param = params[0];
    for (Field field : param.getClass().getDeclaredFields()) {
        for (Annotation anno : field.getDeclaredAnnotations()) {
            if (anno instanceof FreeText) {
              field.set(param, [YOUR CUSTOM LOGIC METHOD]);
     }

  }
 }
  return in.proceed();
}

希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM