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

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

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

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

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

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

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

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

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

Victor Alenkov

  • 32
    вклад
  • 1
    вопрос
  • 35
    ответов
  • 46%
    решений
Комментарии
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    Это модульность в виде просто разбиения на модули проекта. Автору же надо были модули в виде плагинов к приложению
    Написано более трёх лет назад
  • Почему передача значений Autowired полей в качестве параметров метода базового класса - это антипаттерн?

    Borz
    Victor Alenkov @Borz
    Дмитрий: вот пример: www.filedropper.com/toster-398270tar
    Написано более трёх лет назад
  • Почему передача значений Autowired полей в качестве параметров метода базового класса - это антипаттерн?

    Borz
    Victor Alenkov @Borz
    Дмитрий: где в документации про XML? это такая же настройка бина, только через JavaConfig

    import demo.toster.BeanA;
    import demo.toster.BeanB;
    import demo.toster.IBean;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class Config {
    	@Bean
    	public IBean beanA() {
    		return new BeanA();
    	}
    
    	@Bean
    	public IBean beanB() {
    		return new BeanB();
    	}
    
    	@Bean
    	public AbstractService serviceA(@Qualifier("beanA") IBean bean) {
    		final ServiceImpl service = new ServiceImpl();
    		service.setBean(bean);
    		return service;
    	}
    
    	@Bean
    	public AbstractService serviceB(@Qualifier("beanB") IBean bean) {
    		final ServiceImpl service = new ServiceImpl();
    		service.setBean(bean);
    		return service;
    	}
    
    }
    Написано более трёх лет назад
  • Почему передача значений Autowired полей в качестве параметров метода базового класса - это антипаттерн?

    Borz
    Victor Alenkov @Borz
    а чтобы передать при таком раскладе из сервисного класса в родительский класс нужный бин, делаете @Autowired в конструкторе сервисного класса и после super() вызываете setMyBean(mybean)
    Написано более трёх лет назад
  • Почему не загружаться hibernate envers в IntelliJ IDEA 16?

    Borz
    Victor Alenkov @Borz
    а с чего он там должен быть? это динамические сущности, видные только в runtime.
    Написано более трёх лет назад
  • Spring Boot rebuild and restart after commit?

    Borz
    Victor Alenkov @Borz
    да
    Написано более трёх лет назад
  • Spring Boot rebuild and restart after commit?

    Borz
    Victor Alenkov @Borz
    если у вас bitbucket, то лучше заморочьтесь на CI и делайте пересборку только после прохождения тестов - так у вас всегда будет рабочая сборка крутиться.
    тем более, что уже есть "из коробки" Pipeline
    Написано более трёх лет назад
  • Как получить переменные окружения сервера tomcat?

    Borz
    Victor Alenkov @Borz
    ingush: вы это хотите?
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    Stanyslav Glubyshev: лови коммит. демка запускается через файл demo.bash. Содержимое лежит в каталоге demo.
    Это конечно несколько нарушает Spring Boot Way в плане "всё в одном файле, за исключением настроек", но зато работает модульность :)
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    SPI для Spring Boot не очень-то и нужен - у него есть свой механизм загрузки модулей через spring.factories. Другое дело, что если использовать стандартный упаковщик Spring Boot, то фигня получается - он делает one-jar приложение и не хочет видеть внешние библиотеки
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    Stanyslav Glubyshev: добавь в Collaborators git-пользователя BorzdeG, чтоб я мог тебе туда push сделать рабочего примера - форкать не хочется.

    P.S. был с loader.path неправ - он нифига не грузит как надо.
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    Stanyslav Glubyhev: сделайте.
    Написано более трёх лет назад
  • Имеет ли значение среда разработки при изучении Java (Intellij Idea и Eclipse)?

    Borz
    Victor Alenkov @Borz
    Игорь: учитывая, что в большом выигрыше там Notepad++, не думаю что там большая масса голосующих это Java-разработчики...
    Хотелось бы увидеть рейтинг именно с привязкой к языку
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    проект по ссылке это не Spring Boot и потому это другая философия и другой подход к организации модульности Spring-приложения
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    потому что вы нарушаете Spring Boot Way.
    Если коротко - каждый модуль должен сам загрузить себя в окружение основываясь на доступных ему настройках.

    Например я бы сделал так:
    создаю модуль migrate.jar, в нём набор тех самых сущностей, репозиториев и бинов
    но, следом я создаю класс MigrateAutoConfiguration, в котором:
    1) использую @EntityScan для объявления пакетов, в которых лежат мои сущности (EMF их потом подцепит при загрузке)
    2) использую @EnableJpaRepository, в котором укажу пакеты где лежат мои репозитарии (Spring Data их потом тоже использует при загрузке)
    3) использую @ComponentScan в котором ничего не укажу, т.к. мой MigrateAutoConfiguration является "родительским" и аннотация будет сканировать в глубину от меня. Либо укажу, если это будет не так (но я так не люблю делать)
    4) создам spring.factories, в который пропишу мой MigrateAutoConfiguration
    всё! Теперь если подсунуть этот jar модуль, то он сам укажет какие сущности использовать, какие репозитарии для работы с ними будут и какие ещё бины надо поднять.

    Если же потребуется что-то сделать в завершении поднятия приложения, то я воспользуюсь интерфейсом org.springframework.context.ApplicationListener, которому передам что-нить из пакета org.springframework.context.event, например org.springframework.context.event.ContextRefreshedEvent и там уже произведу необходимые мне действия
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    glubyshev: замените modules.path на loader.path и используйте spring.factories. Это должно дать нужный вам функционал.
    зависимости может и не быть в core. Тем более, что хранить application.properties внутри jar как-то не правильно что-ли. Его можно хранить в config-каталоге рядом с запускаемым jar, либо указывая до него путь в командной строке. Либо просто объявите переменную окружения LOADER_PATH.

    Если вам уж очень надо хранить application.properties внутри jar, то возпользуйтесь профилями Spring и при запуске включайте например профиль "client", что вызовет загрузку файла application-client.properties и в нём уже указывайте какие модули грузить и прочие настройки, специфичные для клиента
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    т.е. на этапе запуска вы знаете какие модули будут грузиться? т.е. они уже есть в classpath. Или их ещё нет и вы дополнительно будете их подгружать после запуска ядра?
    Тогда может посмотреть на PropertiesLauncher и для каждого клиента просто делать свой параметр "loader.path"?
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    и даже в этом случае, я бы модуль migrate.jar сделал бы с использованием spring.factories и посмотрел бы как работает загрузчик контекста, чтобы его дёрнуть.
    ну, это если вы не хотите OSGi
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    glubyshev: а в начале вопроса было написано "При запуске приложения..." - как-то не стыкуется
    Написано более трёх лет назад
  • Как сделать динамически модульное приложение Spring Boot?

    Borz
    Victor Alenkov @Borz
    вот ещё чтиво: docs.spring.io/spring-boot/docs/current/reference/...

    формат в файле ещё можно так писать:
    BEAN_NAME=FULL_PATH_BEAN_CLASS
    Написано более трёх лет назад
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • Антон Банников
    • 5 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 4 ответа
    • 1 вопрос
  • CityCat4
    CityCat4
    • 4 ответа
    • 0 вопросов
  • sandersrocket
    sanders rocket
    • 3 ответа
    • 1 вопрос
  • Rsa97
    Rsa97
    • 3 ответа
    • 0 вопросов
  • AshBlade
    Сергей Соловьев
    • 3 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

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

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