Ответы пользователя по тегу Spring
  • Ошибка при работе со Spring Security. Как ее решить?

    @Akela_wolf
    Extreme Programmer
    Я step by step повторял за ютубером "Eugene Suleimanov"

    С какой целью вы это делали?
    я понятие не имею в чем причина

    И что вы хотите от нас? Чтобы вам решили эту проблему, а со следующей вы снова прибежите и снова напишете "я понятие не имею в чем причина"?
    Ответ написан
    2 комментария
  • Как ограничить доступ пользователю к чужим постам на сайте?

    @Akela_wolf
    Extreme Programmer
    Самый простой путь: в том месте где вы загружаете сущность поста из БД добавить проверку, что текущий авторизованный пользователь является автором поста.

    Авторизацию пользователя можно сделать разными способами, тут гуглить Spring Security - это все целиком про авторизацию и проверку прав доступа.

    Например, вот статья о сессиях в спринге, думаю в качестве отправной точки сгодится.
    Ответ написан
    Комментировать
  • Что значит приложение в Spring?

    @Akela_wolf
    Extreme Programmer
    • В терминах операционной системы (windows), приложение = программа.
    • С точки зрения спринга, если не вдаваться глубоко в детали, это тоже самое. Приложение = программа, написанная с использованием Spring. Это может быть сайт, это может быть некий сервис, это может быть вообще консольная команда.
    • С точки зрения VK, приложение - это некий сайт (или его часть), использующий API VK. То есть дополнение к ВКонтакте


    Не совсем понятно какая у вас цель. Если добавить на своем сайте возможность создавать дополнения к нему, то есть приложения, то в первую очередь нужно определиться какие возможности этим приложениям будут доступны. А затем уже создавать API для них. Форма для приложения - это по сути обычная форма, после обработки данных из которой добавляется запись в БД вашего сайта о существовании приложения и его атрибутах (в частности токене для авторизации, чтобы вы понимали какое приложение шлет запросы вашему API).

    То есть, говоря о "приложении" нужно понимать контекст в котором это слово употребляется.
    Ответ написан
    1 комментарий
  • Java Spring Boot MVC как сохранить несколько картинок относящихся к одному посту?

    @Akela_wolf
    Extreme Programmer
    final List<AdImage> imageList = new ArrayList<>();
    for (...) {
    ...
      final AdImage image = new AdImage(...); //Аналогично тому как вы создаете Ad
      imageList.add(image);
    ...
    }
    ad.setImages(imageList);


    Еще вопрос можно ли в в AdImages избавить от колонки id?

    Зачем от нее избавляться? Если убирать её - то что будет идентификатором изображения вместо нее?

    И еще момент: вы либо не выложили полный код ваших Entity, либо у Ad нет конструктора, который вы пытаетесь вызвать.
    Ответ написан
    1 комментарий
  • Как работать с SOAP в Spring?

    @Akela_wolf
    Extreme Programmer
    Чем вам не понравились первые две ссылки?
    Ответ написан
    Комментировать
  • Как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов?

    @Akela_wolf
    Extreme Programmer
    1. Подумать - что это за странное разбиение на микросервисы, которые оперируют связанными данными? Возможно тут что-то не так (и сильно не так)
    2. Подумать - не стоит ли данные денормализовать и сдублировать данные о пользователе (или работе) в какой-то из двух микросервисов.
    3. Выгребать все данные без фильтрации и делать фильтрацию и пагинацию уже на сервисе-потребителе. Но тут все зависит от объема данных. Если там десятки-сотни мегабайт - это окажется очень грустно.

    Но лично я бы в первую очередь заподозрил необходимость рефакторинга. И, возможно, слияния этих микросервисов.
    Ответ написан
    Комментировать
  • Можно ли вынести 'basePackages=some.path' у @RestControllerAdvice в application.yml?

    @Akela_wolf
    Extreme Programmer
    То что лежит в библиотеке - не аннотируете.

    В проекте создаете класс - наследник и аннотируете.
    Либо вписываете в конфигурацию:
    @Bean
    @RestControllerAdvice(...)
    GlobalExceptionHandler exceptionHandler() { ... }
    Ответ написан
    Комментировать
  • Могу ли я подключить docker к проекту spring (и вообще к любым проектам) после окончания его разработки?

    @Akela_wolf
    Extreme Programmer
    Неважно. В любой момент вы можете собрать ваш проект в docker image и далее использовать его любым угодным вам образом.

    В случае spring (и вообще java/kotlin), см. jib-gradle-plugin или jib-maven-plugin в зависимости от используемой системы сборки.
    Ответ написан
    Комментировать
  • Почему ArrayList пустой?

    @Akela_wolf
    Extreme Programmer
    Так запрос же асинхронный. То есть вы его запускаете и говорите "вот когда данные придут - запиши их в список". И не дожидаясь пока запрос выполнится - возвращаете список (который, разумеется, пустой - запрос же еще в процессе выполнения).

    Поэтому, если уж вы начали использовать асинхронные запросы - надо жить в асинхронном мире дальше, везде протаскивая Mono и Flux.

    Либо переходить на Kotlin с его корутинами (которые прекрасно интегрируются с Mono/Flux)
    Ответ написан
    Комментировать
  • Как спарсить json?

    @Akela_wolf
    Extreme Programmer
    Насколько я вижу по структуре JSON у вас здесь List<Map<String, RegisterRequest>>
    Ответ написан
    Комментировать
  • Spring boot + Kotlin. Где найти учебный материал?

    @Akela_wolf
    Extreme Programmer
    А зачем вам учебный материал по спрингу на котлине?

    Весь учебный материал по спрингу актуален для котлина. Переложить Java на Kotlin - даже не просто, а очень просто (даже IntelliJ IDEA умеет автоматически конвертировать Java в Kotlin). Поэтому берите Java и не мучайтесь (все равно при использовании котлина и спринга джаву знать необходимо т.к. постоянно будете натыкаться на джавовские библиотеки)
    Ответ написан
    Комментировать
  • Как дозаполнить корректно поля для Entity при конвертации из DTO?

    @Akela_wolf
    Extreme Programmer
    Да ктож знает-то кроме вас? Может быть у вас есть разумные значения по умолчанию. Может быть у вас есть какой-то источник данных (настройки, шаблоны и т.д.). Может быть это вообще ситуация ошибки.
    Ответ написан
  • Как добавить пакет в проекте spring?

    @Akela_wolf
    Extreme Programmer
    Controller является частью приложения, соответственно пакет Controllers должен находиться внутри пакета application

    Это, конечно, можно править аннотациями спринга, но вообще SpringBootApplication ищет компоненты (контроллеры, сервисы, репозитории и т.д.) "вниз" от класса приложения. Соответственно в вашей структуре оно контроллер просто не находит и не создает бин контроллера.

    Альтернатива - см. аннотацию ComponentScan
    Ответ написан
    Комментировать
  • Как спроектировать API, чтобы избежать ошибку 504 Gate away?

    @Akela_wolf
    Extreme Programmer
    Если вас тормозит именно внешний API и этот API нормально выдержит большое количество одновременных запросов - то асинхронность более чем поможет. Рекомендую посмотреть Webflux и/или корутины на котлине.
    Ответ написан
    Комментировать
  • Как записать json который содержать массив объектов в pojo?

    @Akela_wolf
    Extreme Programmer
    Скажите, а вас разный регистр буковок в запросе и в ответе (хотя там одни и те же DTO) ни на какие мысли не наталкивает?

    А меня вот наталкивает, что Jackson сериализует и десериализует поля с именами из маленьких буковок. Либо сконфигурируйте Jackson чтобы он понимал большие - либо шлите запрос с маленькими буковками.
    Ответ написан
    Комментировать
  • Как правильно логировать базу данных?

    @Akela_wolf
    Extreme Programmer
    Логировать в БД (в отдельную таблицу) спринг вполне может. Но это, обычно, не очень хорошее решение. В промышленном использовании все-таки лучше логировать в файл, затем logstash -> elastic -> grafana/kibana или аналогичный стек. Можно graylog - решений в общем-то много и смысла нагружать именно реляционную БД логами обычно мало.
    Ответ написан
    1 комментарий
  • Может ли Service иметь репозитории других классов?

    @Akela_wolf
    Extreme Programmer
    Технически вам никто не мешает так делать

    Архитектурно - нужно смотреть по конкретному проекту.
    Ответ написан
    1 комментарий
  • Зачем нужны интерфейсы для слоев DAO и Service в Java?

    @Akela_wolf
    Extreme Programmer
    Интерфейсы нужны для возможности замены реализации не затрагивая основной код. При использовании интерфейсов основной код ничего не знает об деталях реализации (слабая связанность). Соответственно, реализацию можно вынести в отдельный модуль (изолировать сложность). Если основной код ссылается непосредственно на класс, содержащий реализацию (сильная связанность), то сложность программы возрастает и сопровождение программы усложняется. Поэтому интерфейсы особенно нужны на границах подсистем.

    Если реализация отделена от основного кода, то становится легко подменить её в тестах, например, подсунуть in memory реализацию, вместо БД. См. fake object (не путать с mock). Это еще один важный плюс интерфейсов.

    Возможно, в простых программах интерфейсы не слишком нужны. Но, поскольку вы говорите об учебном примере, то использовать их (приучая сразу к хорошему, правильному стилю) - это правильно.
    Ответ написан
    Комментировать
  • Как сформировать и отправить Principal на React Js в Spring Boot приложение?

    @Akela_wolf
    Extreme Programmer
    React-приложение должно послать те данные, которые нужны спрингу, чтобы сконструировать Principal. Распространенный вариант - JWT-токен. Либо идентификатор сессии. Либо еще что-то, нужно смотреть конкретику как у вас сконфигурирован Spring Security в приложении.
    Ответ написан
    Комментировать
  • Не могу получить доступ к MSQL?

    @Akela_wolf
    Extreme Programmer
    spring.datasource.url=<jdbc string>
    spring.datasource.username=<username>
    spring.datasource.password=<password>

    За остальными опциями см. документацию спринга.
    Ответ написан
    Комментировать