Использование АОП или аннотаций для расширения функциональности службы

Я хотел бы знать, как лучше всего расширить существующую функциональность (возможно, с помощью АОП или аннотаций). Сценарий, который я ищу.

У нас есть одна служба, скажем, DisableEmployee, которая использует сущность Employee, которая выполняет некоторую проверку, а затем отключает доступ к сотруднику. Для некоторых клиентов я хотел бы расширить эту функциональность, где DisableEmployee не только отключает доступ, но и накладывает некоторые штрафные баллы.

Одним из подходов было бы расширение базового класса, а затем добавление дополнительных функций.

Можно ли (или желательно) использовать здесь АОП и аннотации; где я аннотирую свой DisableEmployee, а затем во время компиляции добавляю дополнительный код в класс. (используя аспект) Я читал об APT и Velocity, которые должны помочь мне в его достижении. Причина, по которой я смотрю на APT, заключается в том, что нам, возможно, придется расширить классы сущностей, чтобы добавить некоторые новые атрибуты.

Идея такого подхода состоит в том, чтобы посмотреть, можем ли мы классифицировать расширение службы как форму сквозной функциональности (например, традиционное ведение журнала, аудит....)

заранее спасибо


person Rajesh Jadhav    schedule 26.08.2011    source источник
comment
Только сейчас я получил этот тег, добавленный Константином. Логически это добавление неверно, потому что AspectJ является лишь реализацией АОП среди многих других. Но практически я согласен с его выбором (см. мой ответ).   -  person alehro    schedule 26.08.2011


Ответы (1)


Ваш вопрос слишком общий, чтобы получить надежный ответ. Но на данный момент я не вижу ничего, что нельзя было бы реализовать в AspectJ.

person alehro    schedule 26.08.2011