Некоторые компании, работающие с персональными данными пользователей, сталкиваются с невозможностью хранить их в течение долгого периода времени из-за правовых ограничений. Такое часто можно встретить в финтехах. Позволяется сохранить данные на очень короткое время, которые также должны быть удалены сразу после использования в целях сервиса. Существует несколько вариантов решения этой задачи. В данном посте я показываю упрощенный пример микросервиса, работающего с чувствительной информацией, используя Spring и Redis.
Рубрика «aop»
Пример использования Spring Data и Redis для временного хранения персональных данных
2024-11-11 в 7:15, admin, рубрики: aop, aspectj, java, redis, spring, spring boot, testcontainersТы решил написать свой фреймворк. Стоило оно того?
2020-09-03 в 12:20, admin, рубрики: aop, php, php подкаст, аспектное программирование, Блог компании Skyeng, Разработка веб-сайтов, фреймворки php
Как говорили классики, «я знал, что рано или поздно мы дойдем и до этого». Вот и я спустя много лет спокойной жизни с Symfony в рабочих и ReactPHP в пет-проектах вписался в создание своего фреймворка.
Но его история только начинается. А как было у тех, чье детище доросло до продакшн-уровня, но так и осталось нишевым решением? Я нашел человека, который знает ответ на этот вопрос — автора и ведущего разработчика аспектно-ориентированного фреймворка.
Читать полностью »
Выборочное логирование трафика для сервисов SOAP
2019-06-19 в 10:27, admin, рубрики: aop, aspectj, java, soap, Spring-WS, Анализ и проектирование систем, Блог компании True Engineering, Разработка веб-сайтовПрактически в любом нашем проекте, который интегрируется с сервисами заказчика, используются SOAP-сервисы. И в каждом таком проекте есть задача логирования информации. Мы особенно заинтересованы в логировании запросов, которые связаны с бизнес-операциями решения. Например, сотрудник ввел неправильные данные и сервис вернул ошибку. Мы хотим знать детали этой ошибки и как можно быстрее её поправить или вынести на обсуждение с заказчиком.
Мы хотели бы видеть запросы нашего клиента и ответы сервиса в неизменном виде, поскольку это помогает разбирать возникающие проблемы.
В этой статье расскажем, как мы настроили выборочное логирование трафика для сервисов SOAP.
Validators + Aspects: кастомизируем валидацию
2018-12-04 в 12:25, admin, рубрики: aop, architecture, aspect, aspect oriented programming, java, java8, spring, spring boot, spring framework, validation, validations, validator, validators, аспект, аспектно-ориентированное, аспекты, валидация, валидация данных, ПрограммированиеДоброго времени суток!
Спустя некоторое время решил вновь написать сюда и поделиться своим опытом. На этот раз статья будет о том, как кастомизировать стандартные валидаторы, и вызывать их там, где нам будет нужно, используя Spring — аспекты. Ну а сподвигло меня на написание — практически отсутствие подобной информации, особенно на русском.
Проблема
Итак, суть приложения примерно такова: есть gateway — api, который принимает запрос, а в дальнейшем модифицирует и перенаправляет его соответствующему банку. Вот только запрос для каждого из банков отличался — как и параметры валидации. Поэтому валидировать изначальный запрос не представлялось возможным. Тут было два пути — использовать аннотации из javax.validation, либо писать свой отдельный слой валидации. В первом случае была загвоздка — по умолчанию объекты можно валидировать только в контроллере. Во втором случае так-же были минусы — это лишний слой, большое количество кода, да и в случае изменения моделей, пришлось бы менять и валидаторы.
Поэтому было принято решение найти способ дергать стандартные валидаторы там где это было необходимо, а не только в контроллере.
Дергаем валидаторы
Спустя пару часов копания в гугле были найдены пару решений, самое адекватное из которых было заавтовайрить javax.validation.Validator и вызвать у него метод validate, которому в качестве параметра нужно передать валидируемый объект.
Казалось бы, решение найдено, но автовайрить везде валидатор не казалось хорошей идеей, хотелось более элегантного решения.
Добавляем АОП
Недолго думая я решил попробовать адаптировать под это решение мною всеми любимые аспекты.
Логика была примерно следующей: создаём аннотацию, и вешаем её над методом который преобразует один объект в другой. Дальше в аспекте перехватываем все методы помеченные этой аннотацией и вызываем метод validate для возвращаемого ими значения. Профит.
Читать полностью »
Разумное АОП для поклонников IOC-контейнеров
2016-07-11 в 6:27, admin, рубрики: .net, aop, autofac, C#, castle.dynamicproxy, castle.windsor, interceptors, proxy, Анализ и проектирование систем, Программирование, Разработка веб-сайтов, метки: castle.dynamicproxy, castle.windsorЯ очень не люблю boilerplate. Такой код скучно писать, уныло сопровождать и модифицировать. Совсем мне не нравится, когда тот самый bolierplate перемешан с бизнес-логикой приложения. Очень хорошо проблему описал krestjaninoff еще 5 лет назад. Если вы не знакомы с парадигмой AOP, прочитайте материал по ссылке, он очень хорошо раскрывает тему.
Как на момент прочтения этой статьи, так и сейчас меня не устраивают ни PostSharp ни Spring. Зато за прошедшее время в .NET появились другие инструменты, позволяющие вытащить «левый» код из бизнес-логики, оформить его отдельными переиспользуемыми модулями и описать декларативно, не скатываясь при этом в переписывание результирующего IL и прочую содомию.
Речь пойдет о проекте Castle.DynamicProxy и его применении в разработке корпоративных приложений.Читать полностью »
Теория и практика AOP. Как мы это делаем в Яндексе
2016-06-30 в 13:47, admin, рубрики: android development, aop, aspectj, java, Блог компании Яндекс, Программирование, Разработка под androidОдна из ключевых особенностей работы в Яндексе — это свобода выбора технологий. В Авто.ру, где я работаю, нам приходится поддерживать большой пласт исторических решений, поэтому любая новая технология или библиотека встречается двумя вопросами коллег:
— Насколько это увеличит дистрибутив?
— Как это поможет нам писать меньше и эффективнее?
Сейчас мы используем RxJava, Dagger 2, Retrolambda и AspectJ. И если о первых трёх технологиях слышал каждый разработчик, а многие даже применяют их у себя, то о четвёртой знают только хардкорные джависты, пишущие большие серверные проекты и разного рода энтерпрайзы.
Передо мной стояла цель ответить на эти два вопроса и обосновать использование AOP-методологии в Android-проекте. А это значит — написать код и показать наглядно, как аспектно-ориентированное программирование поможет нам ускорить и облегчить работу разработчиков. Но обо всём по порядку.
Аспектно-ориентированное программирование. Основы
2015-04-03 в 8:54, admin, рубрики: aop, aspectj, aspectj-scripting, java, open source, Программирование, разработка, сквозная функциональностьПродолжим тему, начатую в прошлой слесарно-программистской статье про AspectJ и open source расширение для этой библиотеки aspectj-scripting. В этой заметке рассмотрим какие задачи решает аспектно-ориентированное программирование (AOP) на примере и синтаксисе самой известной библиотеки среди адептов этой методологии. AspectJ — дитя Xerox PARC, теперь совершеннолетнее и живущее в Eclipse Foundation.
(фото из статьи на lurkmore про евроремонт)
Вероятно, статья не будет интересна тем кто часто использует в своей работе AOP и понимает что это такое. В комментариях приветствуются как конструктивные замечания так и веселый холивар!
Disclaimer: Я не теоретик, поэтому рассказанное в статье субъективно, пропущено через призму опыта.
Читать полностью »
Напильники бывают разные или повествование про «напильник» для java программ
2015-04-01 в 11:06, admin, рубрики: aop, aspectj, aspectj-scripting, java, maven, maven-changes-plugin, MVEL, repository, напильник, разработкаВ практике java программиста бывает, что очень хочется изменить поведение программы или «подхачить» пару классов без перепаковки приложения, собрать метрики или протестировать java приложение в недрах сторонней библиотеки или jdbc драйвера без исходного кода. Существует несколько способов сделать это. Я расскажу про open source проект aspectj-scripting, который позволяет решать такие задачи в jvm.
Рассказ про aspectj-scripting будет в нескольких публикациях. Начнем с практики! Под катом модификация поведения maven-changes-plugin без его пересборки и перекомпиляции для выгрузки списка задач из JIRA в файлы xml и json
Читать полностью »
Основатель PostSharp устраивает мастер-классы и встречи в России
2015-02-25 в 10:17, admin, рубрики: aop, Gael, postsharp, анонс, встречи, москва-санкт-петербург, я пиарюсь, метки: AOP, PostSharp
Всем привет!
В начале марта с 11 по 17 число, Гаэль Фрэтёр (Gael Fraiteur) приезжает в Россию и хочет провести мастер-классы и вечерние беседы в Москве и Питере. Гаэль известен как человек хорошо разбирающийся в недрах .NET и с большой экспертизой по аспектно-ориентированному программированию. Мероприятия бесплатные, но требуется регистрация.
Москва:
- 12 марта — PostSharp Evening Event (Msk)
- 13 марта — PostSharp One-day Training (MSK)
Питер:
- 15 марта — PostSharp Evening Event (SPB)
- 16 марта — PostSharp One-day Training (SPB)
Я надеюсь, что .NET сообществу это будет интересно.
У многих .NET разработчиков, использовавших в своей практике WPF, Silverlight или Metro UI, так или иначе возникал вопрос «а как можно упростить себе реализацию интерфейса INotifyPropertyChanged и свойств, об изменениях которых нужно сигнализировать?».
Самый простой «классический» вариант описания свойства, поддерживающего оповещение о своем изменении, выглядит так:
Читать полностью »