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

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