2015-08-05 4 views
1

У меня есть класс java, который содержит некоторые поля с сеттерами и геттерами. Что-то вроде этого:java - изменить возвращаемое значение всех методов getter

public class Test{ 
    public String field1; 
    public String field2; 
    ... 

    //Setters and Getters 
} 

Я хочу сделать некоторую логику перед выполнением каждого метода геттера. На самом деле я хочу, чтобы метод вызывался перед вызовом методов getter, возвращал значение метода getter, изменял его и устанавливал новое значение (без изменения тела методов getter, если это возможно, используя пользовательскую аннотацию). Например:

Test test = new Test(); 
test.setField1("field1"); 
test.setField2("field2"); 

Теперь я хочу, когда я использую test.getField1(), один метод, называемый и изменить значение filed1 собственности. В любом случае, для этого?

Edit: Благодаря Ambrish и Kayaman Я понимаю, что один из возможных путей в моей Spring MVC приложения AspectJ. Но мой вопрос: Есть ли все-таки для этого с пользовательской аннотацией?

+1

Вы пытались использовать 'размышления' или' aspectj'? – Ambrish

+0

@ Ambrish Нет, я не знаком с ними. – hamed

+0

Пробуйте эту ссылку: http://www.mkyong.com/spring3/spring-aop-aspectj-annotation-example/ – Ambrish

ответ

0

Вы можете использовать библиотеку AOP, такую ​​как AspectJ, для определения pointcut для методов getter. Это позволит вам выполнять действия до (и после) вызова метода.

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. –

+0

@Francesco Конечно. AOP - идеальный инструмент для этого (в значительной степени единственный инструмент, который не требует слишком больших усилий). – Kayaman

0

Вы можете изучить следующие варианты:

Если ваше приложение Spring на основе их первый вариант, AspectJ, лучше. Reflection можно использовать в любом месте.

+0

Отражение нельзя использовать для перехвата вызова метода. – Kayaman

Смежные вопросы