Аспектно-ориентированное программирование: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 108:
Чтобы аспекты могли оказывать воздействие на обычный, основанный на классах код, эти аспекты должны быть «вплетены» в модифицируемый ими код. Чтобы осуществить это в AspectJ, надо откомпилировать код класса и аспекта ajc компилятором. ajc может функционировать как компилятор или как прекомпилятор, генерируя или действующий код класса, или .java файлы, которые можно затем компилировать и запускать в любом стандартном окружении Java (со ссылкой на небольшой run-time JAR).
 
Для компиляции в AspectJ необходимо явно задать исходные файлы (и для аспектов, и для классов), подлежащие включению в данную компиляцию — ajc не использует classpath, в отличие от javac. Это имеет определенный смысл, поскольку каждый класс стандартного приложения Java является, в некотором смысле, изолированным компонентом. Для корректной работы классу требуется всего лишь присутствие других классов, на которые он ссылается. Аспекты же представляют совокупное поведение, перекрывающее множество классов. Поэтому AOP-приложение должно компилироваться, как модуль, а не по одномуклассуодному классу за один раз.
 
Задавая файлы для компиляции, можно также включать и отключать различные аспекты системы на этапе компиляции. Например, включая или исключая описанный ранее аспект для регистрации, разработчик приложения может добавлять или удалять трассировку метода системы Cactus.