Автор: Брат Сяофу
Блог:bugstack.cn
Осаждайте, делитесь, растите и позвольте себе и другим что-то получить! 😄
Введение
话我放这,踩过的坑越多头发越少!
Странно говорить, что пока ты учишься программированию, от первого контакта с Java, до установки JDK, IDEA, MYSQL, а потом до Spring, MyBatis, RPC, MQ, даже если ты в неглубокой яме , вы прыгнете и попробуете снова. Хватать волосы и щелкать мышью одной рукой — это почти ваша норма.У тебя всегда много поцарапанных волос на клавиатуре!
Однако, даже если он так почесал волосы, он все равно встретил парня, который был полон шалостей.«Брат Фу, почему мою порезанную рожу нельзя перехватить? Я слежу за твоей«Проектирование и разработка промежуточного программного обеспечения SpringBoot»Это написано в колонке, можете мне показать, я уже день работаю».
Затем я покажу всем, что такое Happy Planet, и как он не может перехватить ее с помощью фарса!
Во-вторых, мозг полон насальных операций
1. столкнулся с проблемой
На прошлой неделе Xie Aircraft (псевдоним) прислал мне собственноручно исходный код мидлвара, сказав, что в этом коде ничего нет, так почему же его нельзя вырезать?
- Сначала я был неосторожен и попросил Се прислать несколько скриншотов кода.
- Глядя на код на скриншоте, это точно такой же код в промежуточном программном обеспечении, которое я написал. Проблем нет. Путь к пакету тоже можно просканировать. Почему нельзя его вырезать?
- Я говорю, вы попали в точку останова отладки, чтобы увидеть, как не вырезать? Эй, отладка, и прямо, что не резать.
- В этот момент я подумал о версии JDK, конфигурации среды, контексте Spring, определении аспекта, пути к пакету и не обманул ли меня этот ребенок?
- В конце концов, я заставил этого ребенка обмануть свое сердце и попросил исходный код.
2. Найдите проблему
Прочитав несколько раз исходники, проблем не обнаружено, и я занялся отладкой.В этот аспект толком не зашло.Далее;
- Спасибо, что сохранили исходный код самолета и скопировали новый.
- Моя цель - позволить ему бегать и учиться. Далее я ставлю
DoJoinPoint
Скопируйте его и вставьте его, проверьте его и вставьте его, нет необходимости заменить, хотя есть ошибка, два класса могут сосуществовать следующим образом:
- Это волшебное Ха, я и не подозревал, что оно
DoJoinPoint
Несерьезный класс Java, неправильный путь? Есть невидимые специальные символы? - Поскольку обнаружено, что этот класс неверен, сначала удалите строку. Сначала запустите программу и убедитесь, что нет проблем с другим содержимым, кроме этого класса, чтобы было легко устранить проблему.
- Не говоря уже об удалении этого класса ошибок, программа может работать нормально, а содержимое аспекта перехватывается.
- Теперь, когда программа может работать, я подумал, что вижу, в чем проблема. Я просто открыл папку и нашел волшебнуюAJ! Это вообще не класс Java!
3. Устраните проблему
Хочешь ИДЕЮ?.aj
Этот продукт отображается как значок класса C, и проблема могла быть обнаружена давно. Сразу после этого я отправил скриншот этого класса ошибки в Xie Aircraft и спросил, как вы его создали?он сказал правду
- Се Цзицзе сначала сказал, что он ленивый, хахаха, это смущает людей!
- он сказал создавая
DoJoinPoint
Когда я вижу параметр Aspect, я думаю, что это ярлык для создания аспекта, как показано на рисунке; - После того, как создание завершено, это не немного неправильно.Это не тип класса.Это аспект, поэтому он вручную меняет аспект на Класс, как показано
- Следовательно, то, что на самом деле создал Xie Aircraft, является аспектом
.aj
Класс в конце не является серьезным классом Java, поэтому нет никаких аспектов, и вообще нет соответствующего файла класса.
3. Как правильно использовать класс Aspect .aj
AspectJ, именуемый AJЯ сказал это сам
На самом деле AspectJ — это технология реализации АОП, аналогичная по функциям перехватчикам, интегрированная в инструмент разработки IntelliJ IDEA. Прежде чем использовать IntelliJ IDEA для написания кода AspectJ, необходимо изначально установить набор инструментов AspectJ.В противном случае ваш класс .aj не сможет работать, а класс .aj, отображаемый классом IDEA, также является идентификатором C.
Далее поговорим о том, как пользоваться этой штукой, не ведитесь лишний раз на .aj.
1. Установите Аспект
Перед использованием AspectJ необходимо скачать установочный пакет с официального сайта по адресу:Woohoo.eclipse.org/aspect just/Dow… Если загрузка с официального сайта идет очень медленно, вы можете получить ее из исходного кода, который я предоставил, или вы можете найти и скачать аспект j-1.9.4.jar с других каналов.
Загрузите полную установку;
- Дважды щелкните, чтобы установить
- команда для установки
java -jar aspectj-1.9.4.jar
- Инструкции по настройке: без настройки, дурак, следующий шаг в порядке
- После установки конфигурации по умолчанию на диске C будет создана папка
C:\aspectj1.9
, в том числе: bin, doc, lib и т. д., которые мы будем использовать позже.
2. Плагин ASPECTJ.
Чтобы разработать ASPECTJ в профессиональной версии идеи, вам необходимо установить следующие два плагина:
- Spring AOP/@AspectJ
- AspectJ Support
3. Добавьте зависимость aspectjrt.jar
Нужно добавить в проект перед запускомaspectjrt.jar
полагаться,aspectjrt.jar
то есть в каталоге установки AspectJlib
jar в каталоге.Вы можете скопировать введение в проект, также его можно ввести напрямую
- Щелкните проект правой кнопкой мыши и выберите «Открыть настройку модуля», чтобы открыть
Project Structure
- Щелкните вкладку «Библиотеки» и значок «+» выше, чтобы создать новую библиотеку проекта.
- Выберите путь C:\aspectj1.9\lib\aspectjrt.jar и нажмите, чтобы завершить настройку.
4. Настройте компилятор AspectJ
IDEA использует по умолчаниюjavac
Компилятор, здесь вам нужно настроить компилятор AspectJajc
, сделайте соответствующую настройку в Idea.
- Откройте диалоговое окно IDEA -> Файл -> Настройки.
- Выберите «Сборка», «Выполнение», «Развертывание» -> «Компилятор» -> «Компилятор Java».
- Использовать компилятор: выберите Ajc
- Настройте путь в пути к aspectjtools.jar
C:\aspectj1.9\lib\aspectjtools.jar
5. Кейс-тест
Создайте аспект класс
public aspect DoAspect {
pointcut logPointcut():call(* ApiTest.hi(..));
void around():call(void ApiTest.hi(..)){
System.out.println("call 开始...");
proceed();
System.out.println("call 结束...");
}
before(): logPointcut(){
System.out.println("方法执行 before");
}
after(): logPointcut(){
System.out.println("方法执行 after");
}
}
тестовый класс
public class ApiTest {
public void hi(){
System.out.println("Hi Aspect");
}
public static void main(String[] args) {
ApiTest apiTest = new ApiTest();
apiTest.hi();
}
}
Результаты теста
call 开始...
方法执行 before
Hi Aspect
call 结束...
方法执行 after
Process finished with exit code 0
- На данный момент это правильный способ открыть класс Aspect.Вы также можете попробовать использовать Aspect.Эта статья является лишь введением в этот тип написания аспектов.
4. Резюме
- Чем грубее, смелее и наглее ваш код, тем больше проблем вы столкнетесь.Это может быть из-за того, что вы не соблюдаете определенные спецификации выполнения НИОКР, поэтому эти глупые проблемы, с которыми вы столкнетесь, почти потратят ваше утро или день.
- Но иногда, если вы можете серьезно отнестись к сделанной вами ошибке, глубоко проанализировать, как она возникла, и немного воспроизвести ее, вы можете получить неожиданные результаты, а может быть, даже. Так что если серьезно, то ничего страшного.
- Что касается аспектов, исходного кода и разработки, может быть, мы должны не только сосредоточиться на реализации функций, а иногда даже найти способы избежать рабочего контента, который не растет день за день. Чем больше вы работаете над теми ценными технологиями, тем больше вы получите.
Пять, рекомендация серии
- Я работаю уже два-три года, но не понимаю, при чем тут схемы архитектуры?
- За полгода подбора мы просмотрели более 400 резюме и расскажем вам, как писать так, чтобы вас не дразнили!
- Математика, насколько она близка к программисту?
- Держи траву, ты на самом деле отравил код!
- Вот так резюмируются два года работы, кому ты нужен!