Веб-разработка на Java. Spring AOP Intro.

Автор Elena Batratskaya
Веб-разработка на Java. Spring AOP Intro.

Всем привет.

Сегодня знакомимся с аспектом ориентированным программированием и напишем логирование для сервисов методов нашего приложения аспектное программирование или по-английски aspect oriented programming или сокращённо аооп — это ну такая тоже своего рода парадигма программирования давно знаем есть LP объектно-ориентированное программирование всё завязано на объектах проспект ориентированном программировании всё завязано аспектах и. Аспект ориентированное программирование вообще решает задачи по добавлению сквозная функциональность вашего давайте рассмотрим — это на примере смотреть. Мы у нас есть Service User Service который отвечает за работу с пользователями есть три методом добавления пользователя одного пользователя получение всех пользователей — это этот сервис определяет бизнес логику нашего в разделе взаимодействия с пользователями предположим, что мы хотим.

Ну хоть и вообще есть виды сквозной функциональности или по-другому кросс-кантри functionality это.

Например логирования методов. Да допустим мы хотим аргументы с которыми был вызван метод или мы хотим логировать возвращаемое значение этого метода или мы хотим логировать время выполнения этого метода. Да всё, что угодно и мы хотим — это делать не только в одном методе, а допустим в данном случае в 3:00 или бы у нас было много сервисов и мы хотели бы там не знаю в 50 методов всех различных наших сервисов логировать одно и тоже или ещё какую-то любую другую сквозная функциональность который можно придумать добавить ко всем методам то есть множество методов и конечно мы не хотим добавлять — это везде в каждом вручную нам хотелось бы взяли написать какую описать этого сквозная функциональность в одном месте и применить его ко всем этим методом который мы хотим её применить именно этот диалог или объектно-ориентированное программирование. Аспект на рисование программирование то есть соответственно какие есть вообще давайте для начала первых добавим нужны библиотеки. Я их уже добавил — это Spring aop то есть здесь вся реализация Spring aop aspect ориентированном программировании ещё библиотека. СиДжей реализации которых пользуются Spring — это нам понадобится. СПГ вершин у меня 191 который используется добавляемые в библиотеке и всё. Мы готовы к работе. Давайте во-первых добавим новый файл с конфигурацией который мы будем описывать как добраться связано с аспектами Spring aop добавил наш апликейшн контекст и в общем. Здесь нам доступно аннотация. ООО config то есть такое фруктовый Tag котором будет вся наша по всем аспектам теперь по сути. Аспект, но можем описывать также как и обычный Pajero до plain Old Java object давайте для аспектов и создадим класс Lock aspect то есть мы с вами. Как разблокировать что-то связанное с вызовом с вызовами методов у нас будет компонент. Да чтобы в конфигах получить доступ к нему и. Давайте значит разберём. Из чего состоит. Аспект состоит из трех ключевых вещей во-первых — это эдвайс. Это непосредственно функциональность — это сквозная функциональность которые мы хотим применить в определенных точках до в определенных методов при определённых условиях эти условия при которых и давать применяются они являются point-to-point — это такое предикат которая определяет множество методов или ещё каких-то других точек в которых мы хотим иметь наших разные функциональность связан с подкатом и выполняется в тех условиях которые описывают с этим пунктом вот собственно и всё. Давайте посмотрим. Давайте напишем вообще есть три типа. Идрисов наиболее распространенный — это before After и. Раут Давайте напишем бефор адрес и название понятно, что бефор эдвайс выполнение какого-то года или сквозная функциональность и до вызова например методы или до конкретного поить кота. Давайте be for Advanced для вызова методов User сервиса и так назовем его бефор или не только User Service вообще всех сервисов before Service Method in vacation будет понимать joinpoint аджанта собственно третья составляющая аспекта joinpoint это. или такое snapshot программы в котором управление например бизнес-логики приходят этого аспекта или наоборот. То есть у нас он вот этот же момент объект будет содержать информацию о среде выполнения в момент применение эдвис в конкретном позвонить. Кате Вот примерно будет содержать здесь мы собственно — это и может вызвать можем стать in vacation of Method и добавить здесь joinpoint Get sick где здесь должна быть сигнатура метода вызываемого OK здесь мы описали. Давай да то есть непосредственно какой логику. Мы хотим вставить в какое-то место. каком каком-то месте. Мы хотим чтобы — это логика выполнялся именно. Мы хотим чтобы вот перед вызовами вот этих методов данном случае сервис у нас один давай теперь — это пишу ты очень просто сделать ооп aop aspect Logo спект без проблем. Аспект и в каком классе собственной определили его здесь добавляем auf Die For. То есть у нас диффуры непосредственно указываем какой метод содержит собственность там нашей эдвайс — это before Service Method On vacation и указываем поиск от. То есть — это какой предикат то есть места определения места которых мы хотим — это вызывать данном случае это. То есть — это определённо здесь язык.

0 комментариев
0

Читайте также