• Можно ли сделать динамическое добавление WebAPI?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Не знаю поможет ли вам это, но нужный вам функционал есть в составе Spring Cloud.
    Вам нужно следующее:
    - Spring Configuration Server, который стартует первым и подгружает конфигурации для других микросервисов.
    - (Разумеется, что вам также понадобятся Eureka Server & Spring Gateway API)
    - Далее вам необходимо добавить Spring Cloud Bus, который динамически обновляет конфиги.
    Потом происходит примерно следующее:
    Вы заливаете ваши новые конфиги либо в гит репозиторий, либо локально. При наличии новой конфигурации они доставляются через AMQР к соответствующему микросервису.
    KHtD0FG.png
    Ответ написан
    Комментировать
  • CRUD spring+hibernate: передача json и обработка на сервере?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    По-первых, для реализации вашей задачи вам необходимо обратить внимание на паттерно DTO (data to object).
    Также, если у вас приложение на Spring, то можете подключить мапперы для удобства маппинга (конвертации) dto -> entity (и наоборот). Можете использовать такие либы, как modelMapper, MapStruct.
    Если не хотите использовать либу, то имплементируйте интерфейс Converter<S,T>

    Оптимальность, чтобы не надо было передавать лишних полей, если они не заносятся в таблицу или автогенерируются

    Вы можете на клиентской стороне средствами js проверить поля объекта на null и в случае оного просто не передавать это поле. Ну или же можно передать это поле и проверить на null & empty уже на серверной стороне.

    В JSON в поле one-to-many (например при создании юзера у него будут животные) чтобы передавался только массив idшников животных, а не полностью вся информация о них (частично пересекается с первым пунктом - оптимальность)

    Чтобы передать id животного/ных из фронта необходимо, чтобы они были в БД. Если животные добавляются раньше пользователя, то достаточно при получении dto для user (в утильном классе Converter) найти животных по переданным id и назанчить этих животных юзеру через setPets()или метод addPet()
    Ответ написан
    Комментировать
  • Как собрать с помощью maven ТОЛЬКО тесты?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Первое. что попадается на глаза - <pluginManagement>. Ваши плагины внутри этого тега. Этот тег позволяет управлять указанными плагинами внутри модулей, но если вы хотите, чтобы они были применены к текущему проекту, то вытащите плагины из этого плагина.
    В конфигах плагина maven-assembly-plugin пропишите это и укажите ваш класс
    <archive>
            <manifest>
              <mainClass>com.example.Main</mainClass>
            </manifest>
          </archive>


    А вообще, если хотите настроить fat jar, то лучше использовать - maven shade plugin
    https://stackoverflow.com/questions/16222748/build...
    Ответ написан
  • Как преобразовать строку в несколько чисел?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Используйте метод split() и разделите строку используя запятую. Получите массив подстрок, преобразуйте их в нужный формат (например, int) и все.
    Ответ написан
    Комментировать
  • Как сохранить страницу http на пк selenium java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Как сохранить страницу http на пк selenium java?

    Мне кажется, что вы пошли не тем путем и притом извращенным путем.
    Во-первых, зачем вам для сохранения страницы запускать браузер, использовать selenium и т.д? Это затратно в плане времени и в плане памяти.
    Можно выполнить get запрос на сервер и получить массив байтов самой страницы, сохранить ее.
    www.java2s.com/Tutorial/Java/0320__Network/SaveWeb...
    https://stackoverflow.com/questions/17440236/getti...

    Ну или на худой конец, используйте либу jsoup.
    Вот, пару строк:
    public void downloadPage() throws Exception {
            final Response response = Jsoup.connect("http://www.example.net").execute();
            final Document doc = response.parse();
    
            final File f = new File("filename.html");
            FileUtils.writeStringToFile(f, doc.outerHtml(), StandardCharsets.UTF_8);
        }


    Источник - https://stackoverflow.com/questions/24696766/how-t...
    Ответ написан
    Комментировать
  • Почему Spring boot secure login выдает ошибку 404?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.
    Могу предположить следующие причины:
    1) либо у вас нет шаблона login.html в /resources/templates/
    2) либо запрос не доходит до /login, так как:
    .antMatchers("/").permitAll()
     .anyRequest().authenticated()

    Вы разрешили доступ без аутентификации только к главной странице. А форма авторизации лежит по пути /login
    Ответ написан
  • Как запустить сервлет?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ну можете для начала попробовать проверить context path. Скорее всего проблема именно в этом.
    Т.е. например, вы пытаетесь открыть урл localhost:8080/, а надо localhost:8080/customPath
    Скорее всего вы столкнулись именно с этим.
    Ответ написан
  • Spring mvc tomcat 404 в чем ошибка?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Могу предположить, что вы некорректно настроили томкат. В настройках вашего IDE необходимо указать context path.
    А затем обращаться к вашему приложению примерно так:
    localhost:8080/myPath/hello-world
    Ответ написан
    Комментировать
  • Почему не удалось получить экземпляр FirebaseDatabase?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Во-первых, ответ легко находится поисковиком.
    Во-вторых, там же написана причина ошибки:
    Failed to get FirebaseDatabase instance: Specify DatabaseURL within FirebaseApp or from your getInstance() call.

    Вот, например:
    https://stackoverflow.com/questions/47730910/faile...
    Ответ написан
    Комментировать
  • Как исправить ошибку 401 при авторизации в приложении?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый вечер.
    Ошибки 4хх - являются ошибками на клиенте.
    Было бы неплохо увидеть содержимое post запроса, который убегает на сервер и конечно же то, что приходит на сервер.
    Причины могут быт разные:
    1) содержимое формы (названия инпутов - имя пользователя и пароль), а также ожидаемые названия инпутов отличаются. Например, на сервере ожидается username & password, а вы отправляете login & pass. Обратите внимание на атрибут name инпутов и при необходимости добавьте сответствующие названия в конфиг. .formLogin()
    https://www.baeldung.com/spring-security-login
    2) может быть запрос до спринга даже не доходит по каким-то причинам.
    В общем, не буду гадать и вы не гадайте. Проведите дебаг проекта и все станет на свои места
    Ответ написан
  • Можно ли для придания интерактивности на вэб-страницах в место javascripta использовать java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если речь идет о нормальном проекте, то нет.
    Основу веба составляют 3 языка - html, css, js.
    java, python, php, typescript, ruby лишь серверные языки (в данном контексте). В старых браузерах можно запускать applet'ы, но в новых они не поддерживаются.
    Единственное решение - писать код на Java, который впоследствии транпилируется в JavaScript. Об этом уже упомянул коллега - Vamp
    Ответ написан
    Комментировать
  • Как правильно спроектировать обработку ошибок в слоях?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Я предпочитаю делать это следующим образом.
    На уровне репозитория (FooRepository) получаю Optional<Foo>. Далее на сервисном уровне (FooServiceImpl), который дублирует метод репозитория получаю уже Foo или в случае его отсутствия выбрасываю кастомное исключение FooNotFoundException. Затем некий глобальный ControllerAdvice ловит это исключение и возвращает http статус 404 с кастомным текстом Foo Not Found.
    Ответ написан
    Комментировать
  • Jar файл вылетает из-за кнопки вывода PDF?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Запустите ваш jar через cli (bash, commander, powershell и др.). Затем попробуйте провести соответствующую операцию, чтобы получить нужное исключение. Данное исключение отобразится в консоли. Остается лишь найти причину и исправить ее.
    Ответ написан
    Комментировать
  • Как добавить в Woocommerce функцию оплаты с платежной инструкцией на депозит в банк. счете?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Вбиваете в поиск что-то типа
    woocommerce invoice gateway plugin

    и находите кучу плагинов.
    Например,
    https://ru.wordpress.org/plugins/woocommerce-pdf-i...
    https://wordpress.org/plugins/wc-invoice-gateway/
    https://www.webtoffee.com/generate-woocommerce-pdf...
    А дальше установите и протестируйте
    Ответ написан
    1 комментарий
  • Spring security собственный шаблон для 403?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Добрый день.

    Можно использовать этот сниппет. Тут можно отловить код http ошибки (statusCode), а затем если значение этой переменной равно 403, то отобразить нужный шаблон.
    @Controller
    @RequiredArgsConstructor
    public class HttpErrorController implements ErrorController {
    
      @RequestMapping("/error")
      public ModelAndView handleError(HttpServletRequest request) {
        Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
        if (status != null) {
          int statusCode = Integer.valueOf(status.toString());
          // тут при помощи switch case находим код 403 и отдаем нужный шаблон.
        }
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("/frontend/templates/http-errors");
        return modelAndView;
      }
    
      @SuppressWarnings("deprecation")
      @Override
      public String getErrorPath() {
        return null;
      }
    }
    Ответ написан
    Комментировать
  • Что делать если лого ломает сайт и поменять брейкпоинты бургера на сайте Wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый вечер.
    1) Как отметил коллега, у вас ошибка в слове Coockie должно быть Cookie.
    2) Далее настоятельно рекомендую задавать вопросы поотдельности, а не 3 в одном.
    3)
    как поменять брейкпоинты меню бургера на сайте?

    Что именно вы подразумеваете под брейкпоинтом в данном контексте? В моем понимании брейкпоинт - это точка остановки во время дебага. У вас при ширине 961 - 1452 пикс. меню начинает постепенно сжиматься, но бургер не появляется. Грубо говоря, в планшетной версии отображается полноценное меню, а не бургер. Можно при помощи медиазапросов скрыть полноценное меню и отобразить бургер. скрыть - ashade-nav показать - ashade-mobile-header
    4)
    Как убрать виджет ,,недавние комментарии" на сайте на странице блога

    Раз это виджет, то значит он убирается в разделе Внешний вид - виджеты. Далее найти соответствующую колонку и удалить виджет recent comments. Или же может быть, что при помощи виз. редактора определена область виджетов и добавлены необходимые виджеты. Тогда найдите соответствующую страницу и удалите оттуда этот виджет.
    5)
    на сайте логотип с размером 500x500 занимает пол экрана по какой-то непонятной причине, а когда он меньше хоть бы на 1 пиксель он становится маленьким как не знаю что (можете посмотреть на сайте)

    Меня больше заинтересовало другое, а именно название лого)))
    sbxMaEu.png
    Вот, будет умора, когда лого проиндексируется и попадет в гугл с таким названием
    К тому же, логотип на данный момент размером 300х250 пикс, скорее всего лого становится маленьким потому, что там высота задается автоматически, а ширина 100%. Когда меню уменьшается, то логотип по ширине не уменьшается и соответственно, высота адаптируется под нее. На момент просмотра сайта я не заметил данной проблемы. Попробуйте описать проблему более подробно
    Ответ написан
    1 комментарий
  • Что использовать Kotlin Multiplatform или Flutter?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Есть вот, такая штука для работы на Java - https://multi-os-engine.org/
    Рассматриваете ли вы применение языков js / ts с React Native?
    Ответ написан
    1 комментарий
  • Как средствами JavaScript отправить форму, содержащую текстовые поля и файл, в формате JSON?

    azerphoenix
    @azerphoenix Куратор тега Spring
    Java Software Engineer
    Я так понял, что у всего содержимого формы Content-type должен быть multipart/form-data, верно?

    Да, все верно.

    Также не забывайте отправлять csrf токен, если в настройках безопасности он у вас включен. Некоторые шаблонизаторы (например, thymeleaf) делают это автоматически, но при отправке содержимого формы средствами js надо csrf тоже отправлять. Для этого в head добавляется мета-тег, в который вставляется csrf токен.
    Затем средствами js необходимо получить значение этого тега (токен) и отправить с формой.
    Подробности тут:
    https://www.baeldung.com/spring-security-csrf
    Раздел 3.4 Using Json - https://www.baeldung.com/spring-security-csrf#4-us...

    e.preventDefault();
    Скорее всего эта строка должна быть выше всех. Как бы вы сперва останавливаете form submission, а затем уже делаете все остальное. Иначе у вас форма будет отправлена, а затем выполнится остальной код.

    А вот, ответ на ваш вопрос:
    https://stackoverflow.com/questions/49845355/sprin...
    И в первом ответе и во втором описывается вариант отправки формы средствами js с файлом и с другими данными.
    Ответ написан
  • Какие микросервисы пишут на Java для E-commerce?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Я бы сказал, что по частоте разработки e-commerce больше применяются PHP & Python, возможно еще Ruby, нежели Java. На Java можно разработать ровным счетом все то, что можно сделать на РНР.

    На php пишется большой монолит - торговая площадка с множеством поставщиков. так же есть море парсеров цен, картинок, загрузки прайсов, пересчета цен. Какой микросервис есть смысл написать на Java Spring...

    Так все-таки у вас монолит или приложение микросервисной архитектуры?

    Появился Java программист в команде и нужно его загрузить работой чтоб он усилил проект. Есть идеи?

    Обычно, разработчика берут для выполнения определенных задач. Если у вас есть задачи со сложной бизнес логикой, с которыми может справиться C# или Java, то это другое дело. Иначе зачем вам Java разработчик нужен?
    А раз у вас нет работы для Java разработчика, то зачем вам содержать столь огромный штат. Ведь, можно по надобности обращаться во фриланс к Java разработчику.

    Также учтите следующий момент: допустим, что вам сегодня выгодно содержать Java разработчика и он напишет некоторые микросервисы. Вы столкнетесь со следующими моментами:
    - дороговизна поддержки
    - проблема обеспечения acid в микросервисных приложениях
    Отсюда возникает вопрос - а зачем вам это все? Пишите все на РНР.

    Что нового умеет Java по сравнению с php, может какие полезные библиотеки для машинного обучения что можно применить для интеллектуального формирования коммерческого предложения или может для умного поиска?

    Ну тут уж лучше нанимать python разработчика для deep learning, как мне кажется.
    Ответ написан