Как стать автором
Обновить
27
0
Вячеслав Чернышов @xpendence

backend.developer { java, kotlin }.in(Sber)

Отправить сообщение
Статью писал чувак с акулой на голове?
Сильные заявления экспертного уровня от человека, который, судя по статье, ещё даже не побывал в джунах.

Местами очень даже смешно.
Если Вы собираетесь в дальнейшем использовать этот код, Вам рано или поздно придётся распечатать Data и заменить на отдельные аннотации — Setter, ToString и проч. Иначе, у Вас будут существенные ограничения на кастомизацию полей.

Логика в контроллерах? Ай-ай-ай. Хотя, о том, что CMainViewReport является контроллером, нужно ещё догадаться.

Исключения ради исключений — тоже не очень хорошо.
Ошибку нашёл, просьба не беспокоиться :)
Тогда ещё один вопрос. Вот у меня два метода, на которые я хочу повесить аспект.

@ApiLogBefore(transferType = TransferType.REQUEST, httpMethod = HttpMethod.GET, path = "", param = "transactionId")
public ResponseEntity save(@RequestParam("transactionId") String transactionId) {

и

@ApiLogBefore(transferType = TransferType.REQUEST, httpMethod = HttpMethod.GET, path = "/id", param = "id")
public ResponseEntity get(@RequestParam("id") Long id, HttpServletRequest request) {

Метод, который должен перехватывать обе аннотации, выглядит так:

    @Before(value = "@annotation(before) && args(param,..)")
    public void before(ApiLogBefore before, String param) {


Но почему-то перехватывается только первый, а второй (где вторым аргументом HttpServletRequest) — почему-то нет. В чём проблема, как думаете?
всё оказалось проще — не хватало @EnableAspectJAutoProxy
Я попытался использовать AOP по Вашему примеру, но что-то не заходит в сам метод Before. Я описал проблему на stackoverflow, посмотрите, пожалуйста, и дайте совет, что не так.
Заставили пить за себя и за Андрея?
«Я был под таким кайфом от всей конференции,» что добирался до работы 5 дней.
М-да… А на Википедии и в гугле Вас забанили?
А сами как думаете?
Карма -9. По тонкому льду ходишь, Дмитрий ;)
Судя по тому, что я слышал, это как раз кодировка будущего, но я могу ошибаться.
Спасибо, поправил.

Спасибо, добавил. Отличия действительно есть.

Короче, пришёл Дмитрий Дьячков и занялся своим любимым занятием разводить бессмысленные дискуссии ни о чём. Карма -8 — это показатель, Дмитрий.

Я рад тебя видеть на просторах Хабра, но очередному бесполезному спору я не рад. Продолжать его не буду. Лучше займись делом и почитай хорошую статью, вместо того, чтобы убеждать себя, почему очередная технология тебе не нужна.

Почему больше всего «прорывных идей, простых как лом», исходит от людей, которые не могут освоить даже инкапсуляцию, не говоря уже про стримы?
Да, согласен, ошибками и опечатками Ваш код кишит. Проблема Вашего подхода в том, что бэкенд-разработка давно ушла от низкоуровнего программирования, которое Вы описываете. Конечно, в старых компаниях, особенно в банковском секторе, очень много легаси-проектов, на которых, предположу, Вы выросли. Если же Вы считаете Ваш подход правильным и современным, напишите об этом статью. Если вылезете из минусов, конечно. Всего хорошего.
Первый комментатор к посту описал подход, при котором эндпоинт тащится в репозиторий. Вы описали подход, при котором репозиторий тащится в контроллер. Я ему, кстати, тоже описал, в чём, на мой взгляд, заключается несостоятельность такого подхода. И Вам, кстати, тоже.

А что это у Вас за класс такой модный, Rest Controller?
Скомпилироваться-то скомпилируется, если конструктор оставить, но сам подход неправильный, Вы правы.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Ведущий
Java
Kotlin
Clean Architecture
Проектирование архитектуры приложений
Системная аналитика