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

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