TGViewer
Red Collar | DEV Red Collar | DEV @rdclr_dev · 962 subscribers
Post #50 280
АОП. Аспектно-ориентированное программирование

Всем привет! С вами снова Андрей, java-разработчик. Мы продолжим говорить об экосистеме java и смежных вещах. Сегодня затронем АОП. Тема очень обширная, поэтому в этой мини-статье заденем минимальные основы.

В рамках Spring-фреймворка АОП является некой сквозной логикой, которую мы можем использовать в любом месте приложения, всего навсего повесив аннотацию (или с помощью xml-разметки). Также этот механизм используется почти во всех модулях фреймворка Spring, являясь фундаментом для построения более сложных механизмов.

Пару недель назад мы уже краем касались этой темы, когда рассматривали self-inject’ы и Transactional-аннотацию. Под этой аннотацией, как и под многими другими, как раз таки и скрывается механизм аспектно-ориентированного программирования.

Зачем нам нужно АОП? Данный функционал хорошо себя показывает в задачах, связанных с логированием или предоставлением доступов к каким-либо ресурсам. Чтобы не дублировать код наших логов по всему проекту, мы можем вынести это в одно место и вызывать (с помощью аспектов) перед выполнением метода или после. В случае предоставления доступов бывают ситуации, когда нам нужно проверить доступ к ресурсам исходя не только из токена (или любого другого ключа) пользователя, а из данных, которые находятся, например, в базе данных. Есть ли у пользователя X доступ к скачиванию этой фотографии или архива с документами?

Давайте попробуем разобраться на простом примере (примеры будут сразу в следующих постах). Для начала, в pom.xml, вы должны иметь следующие зависимости: spring-boot-starter-web, spring-boot-starter-aop. Это минимальный набор, чтобы начать изучать spring aop. Рассмотрим самописные аспекты по логированию какой-то информации сигнатуре метода и по доступу к файлу.

#rdclr_backend #java
Telegram RDCLR.DEV Ловушка @Transactional или использование Self-inject’ов В бине имеется 2 метода: a() и b(), помеченных аннотацией @Transactional. Если мы из метода а() вызовем метод b() — как поведет себя транзакция метода b()? Правильный ответ — транзакция метода b() не…
More from @rdclr_dev
  1. Aug 24, 2026Post #432
  2. Aug 3, 2026Post #431
  3. Jun 25, 2026Ура, мы в подборке телеграм-каналов 😺 Попали в папку IT-HUB вместе с коллегами из разрабо…
  4. Jun 8, 2026ИИи что будет 23 июня 🔥 Нет времени объяснять, 23 июня в Воронеже вместе с Partner's Club…
  5. May 4, 2026QA-стажировка в Red Collar 💕 Поможем разобраться, как устроено тестирование в реальной ко…
  6. Apr 21, 2026От игр за школьной партой до креативных проектов ⚾️ Недавно Миша Попов, лид креативной fro…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →