Guice vs AspectJ - PullRequest
       37

Guice vs AspectJ

6 голосов
/ 20 августа 2010

Я работал с GUice несколько месяцев назад, и теперь, когда я возвращаюсь к нему, мне приходится перечитывать документацию и примеры Guice, чтобы понять, что я сделал с моим кодом.

Однако, когда я смотрю на AspectJ, он слишком интуитивен. Это интуитивное расширение языка Java. Я чувствую, что могу сесть и сразу же написать код AspectJ.

Поэтому я испытываю искушение отказаться от погони за Гисом и пойти с Аспектом. Особенно тот факт, что Spring генерирует код AspectJ.

Какие особенности Guice есть над AspectJ, что должно отговорить меня от отказа от Guice?

Почему бы Google не отказаться от Guice и использовать вместо него AspectJ?

И наоборот, каковы особенности AspectJ, которые побуждают меня отказаться от Guice, кроме интуитивности его?

Если мне может быть разрешено «сплетать» вопрос здесь, что препятствует слиянию языка Java с AspectJ или предоставляет аналогичные «аспекты» в будущей версии Java?

Примечание : для запуска «счастливого удаления-азиллы», я понимаю, что этот вопрос может быть слишком общим - но если бы я знал, какие дополнительные подробности задать, то мне даже не нужно было бы спрашивать, а просто гугл / бинг за то что я знаю что не знаю. Как вы видите, мои знания Guice настолько ухудшились, что я даже не узнаю свой собственный почерк .

Ответы [ 3 ]

19 голосов
/ 20 августа 2010

Как говорит Питер, Guice и AspectJ - это совершенно разные вещи.Guice внедряет зависимости, сохраняя множество заводских записей, делая код гибким и легким для тестирования, а также добавляя полезные вещи, такие как области видимости.Также случается, что это позволяет очень простой и легкий способ выполнения AOP с помощью перехвата методов (с программной конфигурацией перехваченных методов, а не DSL).По сути, это еще один бонус, который он предоставляет, а вовсе не его основная цель.

Что касается того, почему AspectJ не объединен с Java ... Я не думаю, что многие люди хотели бы, чтобы это произошло.АОП мощно, но опасно.Хотя он, безусловно, отлично подходит для некоторых применений и значительно упрощает код в этих случаях, при чрезмерном использовании он может усложнить понимание того, что происходит в программе.

7 голосов
/ 20 августа 2010

По мне, AspectJ и Guice делают разные вещи.

Guice внедряет зависимости, а AspectJ занимается сквозными проблемами.

Если вы используете пружину, то использование Guice действительно имеет меньшую ценность, так как слишком много перекрытий, и тогда симбиоз Spring / AspectJ является убедительным решением.

Мне, конечно, больше нравится обличье для не весенних проектов из-за его меньшего веса.

2 голосов
/ 20 августа 2010

Spring построен на внедрении зависимостей и аспектно-ориентированном программировании.

Guice - механизм ввода зависимостей.

AspectJ - аспектно-ориентированный механизм.разница?Guice и AspectJ будут дополнять друг друга;Spring уже имеет оба.

Следует отметить, что Spring поддерживает свой собственный AOP на основе перехватчика, который не требует манипулирования байтовым кодом, в дополнение к AspectJ.

...