![](/img/trans.png)
[英]Modify POJO class fields with custom setter or custom annotation (in Spring Boot)
[英]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.