Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
jaxtr

Александр Косарев

JavaEE/Spring-разработчик
  • 115
    вклад
  • 0
    вопросов
  • 172
    ответа
  • 38%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как исправить ошибку настройки БД которой нету SpringKotlin?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    В файле свойств проекта (application.yml или application.properties) должен быть указан путь до используемой БД в spring.datasource.url
    Ответ написан 28 февр.
    Комментировать
    Комментировать
  • Как использовать SpEL в собственных аннотациях?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Для парсинга и выполнения SpEL-выражений используется SpelExpressionParser, но ему нужно в процессе дать объект, откуда требуется получить требуемое значение, что-то вроде:
    SpelExpressionParser spelExpressionParser = new SpelExpressionParser();
    Expression expression = spelExpressionParser.parseExpression("getAge() > 18");
    String value = expression.getValue(object, String.class);


    Но что-то мне подсказывает, что в данном случае нужно получить значение некоторой переменной из конфига. Если это так, то значительно проще в ServerNameRequestMappingHandlerMapping добавить свойство, в которое будет заранее внедрено значение свойства app.externalApiHostname при помощи `@Value("${app.externalApiHostname}")` или `@ConfigurationProperties`. Следовательно вычислять фактическое значение аннотации ServerNameMapping не нужно будет
    Ответ написан 28 февр.
    Комментировать
    Комментировать
  • Как настроить CORS Spring Security?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    <java.version>1.8</java.version>

    Вот тут версию сделать 17, раз Spring Security 6+ (кстати, Spring Boot сделать бы 3+). В SecurityConfiguration по факту отсутствует настройка CORS. Делается это при помощи ветки методов http.cors()...
    Ответ написан 28 февр.
    Комментировать
    Комментировать
  • Есть ли способ содержать разные состояния приложения в параллельно запускаемых классах с использованием Spring Framework'а?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Нужно сделать scope="prototype" у бина, чтобы для каждого случая создавался новый экземпляр бина.
    Ответ написан 28 февр.
    1 комментарий
    1 комментарий
  • Ошибка возникающая при сборке maven проекта. Какую версию Java необходимо указать?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Судя по настройкам плагина ожидается, что исходный код (source) должен соответствовать Java 16 и должен компилироваться в байткод Java 16 (target). Локально установлена JDK 11, следовательно source и target могут иметь максимальное значение 11 (не получится собрать проект, написанный на Java 16, под JDK 11). Установи JDK 16+, либо установи значение 11 для свойств source и target.
    Ответ написан 28 февр.
    Комментировать
    Комментировать
  • Чем занимается model в Spring MVC?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Model в Spring MVC предназначен для передачи данных между контроллером и представлением.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как добавить папку ресурсов с помощью bootJar?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Содержимое resources копируется в корень JAR при сборке проекта при помощи Maven, поэтому самой директории resources нет в JAR.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Нарушает ли JPA принципы DDD?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    А почему JPA должен нарушать принципы DDD? Если у тебя проект, в котором применяется DDD, то все архитектурные уровни (должны быть) абстрагированы, и JPA, будучи применённым на уровне доступа к данным, никак не нарушает принципов DDD.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему Spring не использует Jackson для параметра в эндпоинте?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Зачем для этого использовать Jackson?
    Если уж на то пошло, то гораздо логичнее будет написать реализацию org.springframework.core.convert.converter.Converter, которая будет приводить строку к нужному значению.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Срабатывает только один сеттер?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Как уже написал C4ET4uK, проблема с вызовом не того конструктора.
    Hibernate создаёт объект с помощью конструктора по умолчанию, затем при помощи set-методов устанавливает значения свойствам объекта. Соответственно, Hibernate не использует твой конструктор для создания объекта.
    Если у тебя не хранится в БД значение свойства userName (в колонке user_name оответственно), то Hibernate метод setUserName тоже никогда не вызовет.
    Как вариант можно в setEmail добавить вызов setUserName.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Объясните как в java работают TDD тесты на примере данного класса?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Из того что я понимаю на данный момент, вначале пишем тесты которые задают грубо говоря нашу будущую логику программы, дальше пишем саму логику... если логика удовлетворяет нашим тестам то видим что тест прошел.. и идем дальше.


    Да, всё верно понимаешь.

    Имя класса и методов в которые будут производить тестирование моего класса не могут быть произвольными?


    Как угодно, но обычно класс с тестами аналогичен тестируемому классу, но с суффиксом Test. Например: есть класс GreetingService, то тестовый класс будет GreetingServiceTest

    В какой момент именно будут вызываться данные тесты?


    При сборке проекта при помощи инструментов сборки вроде Ant, Maven или Gradle.

    После компиляции моего кода, вызов тестов будет происходить каждый раз при запуске программы?


    Тесты исполняются только при сборке проекта.

    Использую Intellij Community, мне требуется устанавливать дополнительные плагины или есть уже по дефолту что то?


    Для поддержки JUnit или TestNG потребуются соответствующие плагины.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как сделать автоинкремент в колонке MySQL аннотациями Spring?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Вариант 1: в рамках открытой транзакции можно сделать запрос на получение последнего значения и вручную установить значение новой записи.
    Вариант 2: написать хранимую процедуру в MySQL, в которой будет происходить вычисление нового значения свойства number, и дёргать её при создании новой записи.
    Вариант 3: убрать number и использовать id, если это возможно
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Spring источники материала?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Книги
    • Spring in Action (5 издание)
    • Spring Microservices in Action
    • Spring Boot in Action
    • Pro Spring 5
    • Java в облаке (Cloud native Java)


    Видеоролики можно посмотреть на их канале - SpringDeveloper там есть и how-to ролики, есть и доклады с конференций и вебкасты и т.д.

    Ну, а лучший источник инфы по Spring - сайт spring.io. Документация достаточно подробная, информативная и удобная. Кроме мануалов есть различные гайды. Могу посоветовать ещё Baeldung и Spring Framework Guru
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Spring Security. Разные права для разных пользователей. (Как скрыть для Коли (одного из юзеров) возможность "Создать пост" ) ???

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Вариант простой: создаёшь полномочия для каждого действия (что-то вроде CREATE_POST, MODIFY_POST и т.д.), в БД хранишь выданные полномочия (персонально или через роли/группы пользователей), и подтягиваешь их при авторизации. Для проверки используешь hasAuthority в настройках правил доступа или в аннотациях ограничения доступом к методам (Method Security).

    Вариант второй и сложный: используй ACL в Spring Security.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Откуда появляется вторая открытая сессия в Hibernate?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Из твоего кода и появляется - если ты не можешь получить текущую сессию при помощи sessionFactory.getCurrentSession, то ты её создаёшь, но не закрываешь.
    Чтобы получить текущую сессию, нужно настроить какую-нибудь реализацию CurrentSessionContext, например ThreadLocalSessionContext.

    ИМХО
    • Нет смысла использовать транзакции при чтении
    • Используй аннотации вместо XML, будет значительно проще
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Spring Mongo: как организовать парралельное изменение сущности?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Если проблема не проявляется, либо проявляется редко, и стоимость такой проблемы невелика, то её решать нет никакого смысла. В противном случае можно как минимум попробовать использовать оптимистические блокировки, а в идеале - задуматься о применении Event Sourcing.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему CrudRepository#save() выкидывает duplicate entry?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Для id должна быть объявлена аннотация @GeneratedValue:
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • У меня ощущение что я самозванец. Что посоветуете?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Получается, что я связующее звено между всеми отделами (Производство, Бухгалтерия, Логистика) - придумываю решение а индус все это дело кодит.


    Вот тут вся суть твоего вопроса. Ты - не программист, не разработчик, ты - архитектор или как минимум менеджер проекта. И не надо расстраиваться на тему того, что тебя не тянет программировать. Не тянет - значит, не твоё. А вот руководить у тебя получается, судя по всему. А если получается руководить и придумывать решения появляющихся задачи и проблем, так и занимайся этим. Не все специалисты, задействованные в разработке ПО, обязательно должны программировать. Мой совет - развивайся в этом направлении дальше, а программирование оставь тем, кто этим действительно хочет заниматься.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как вынести конфиг файл для системного администратора?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    А в чем проблема? Конфигурационные файлы выносятся в какую-то постоянную директорию, а в приложении указываются пути к этим файлам. Эти пути можно передавать через переменные окружение, через параметры контекста Tomcat (conf/context.xml). При помощи Spring Cloud Config конфигурационные файлы можно вообще держать в git-репозитории и предоставлять доступ к ним через конфиг-серверы.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Что учить вместе с hibernate?

    jaxtr
    Александр Косарев @jaxtr
    JavaEE/Spring-разработчик
    Вот к примеру выборку я делаю с помощью Criteria, а писать в БД как я понял критерия не умеет, по этому использую hql запросы

    Для вставки в Hibernate используется session.save() и session.merge(), не надо ничего мудрить с HQL. Примеры.

    Вопрос: какой смысл тогда с критерии если она умеет только выборки делать ?

    Смысл критерии именно в выборке (но мне удобнее использовать JPQL/HQL).

    Есть ли что-то единственое удобное для выборки, записи, удаления и т.п. ? (JPA?)

    Spring Data JPA

    И что ещё посоветуете учить паралельно с hibernate для поднятия скила и лёгкого старта в Spring mvc ?

    Если вместе со Spring, то советую учить в первую очередь JPA и связанный с ним Spring Data JPA. Для удобства можно ещё и на Spring Boot обратить внимание.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • Следующие →
Самые активные сегодня
  • vovka3003
    Владимир Шаблий
    • 9 ответов
    • 0 вопросов
  • SoreMix
    soremix
    • 8 ответов
    • 0 вопросов
  • Drno
    • 7 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • Vindicar
    Vindicar
    • 6 ответов
    • 0 вопросов
  • Валентин
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации