Spring Boot: Как создать starter?

  Рет қаралды 5,320

#fullstackguy - Обучение IT-профессии

#fullstackguy - Обучение IT-профессии

Күн бұрын

Пікірлер: 30
@peta0982
@peta0982 8 ай бұрын
Хорошее объяснение. Благодаря видео и статье понял для чего и как делать стартеры. Для spring boot 3 вместо файла spring.factories нужен файл org.springframework.boot.autoconfigure.AutoConfiguration.imports.
@fullstackguy
@fullstackguy 8 ай бұрын
Рад, что материал пригодился! 🤝
@Anton_Mitrich
@Anton_Mitrich 2 жыл бұрын
Супер! Одно из самых лучших и доходчивых объяснений данного вопроса Пожалуй подпишусь)
@fullstackguy
@fullstackguy 2 жыл бұрын
Рад что материал оказался полезным! 🤝
@KonstantinSergeev-k5g
@KonstantinSergeev-k5g Жыл бұрын
Классное видео!! Круто было бы увидеть как в новом Буте это делать вроде как уже factories не нужны
@fullstackguy
@fullstackguy Жыл бұрын
Как нибудь сделаю! Спасибо за теплые слова 🤝
@evgeniermakov1522
@evgeniermakov1522 2 жыл бұрын
Доходчиво и понятно! Спасибо!
@fullstackguy
@fullstackguy 2 жыл бұрын
Рад, что видео было полезным! 🤝
@damka2011
@damka2011 Жыл бұрын
Спасибо автору за такой полезный контент! То,что нужно👍🔥
@konstantinz5058
@konstantinz5058 Жыл бұрын
Класс! Спасибо! Но есть пара вопросов: взаимодействие версии спринга в стартере и в приложении (могу ли я использовать свой стартер в приложениях с другой версией спринга и на что нужно обратить внимание). То же самое с версией java. То же самое о различии версий зависимостей
@fullstackguy
@fullstackguy Жыл бұрын
Константин, отличный вопрос! К сожалению, мажорные версии спринга обратной совместимости не имеют, поэтому использование разных версий в приложении и в стартере могут привести к конфликтам. Что делать в этом случае? Мигрировать приложение и стартер на одну версию.
@sanya_yuvelir
@sanya_yuvelir 2 жыл бұрын
спасибо! очень помогло понять данный вопрос
@fullstackguy
@fullstackguy 2 жыл бұрын
Пожалуйста! Очень рад, что пригодилось! 🤝
@bugkirill1578
@bugkirill1578 2 жыл бұрын
👍
@Илья-ч1х5р
@Илья-ч1х5р 8 ай бұрын
Хорошее видео, спасибо. У меня возник вопрос. А могу ли я в кастомном стартере использовать классы и пакеты основного проекта? Например, я хочу в кастомном стартере через аспект логгировать все методы в сервисах основного проекта. Мне для этого надо подключить основной проект в кастомный стартер?
@fullstackguy
@fullstackguy 8 ай бұрын
Илья, спасибо за интересный вопрос! Если честно, Я - не уверен, что так можно. Если стартер будет зависеть от классов проекта, а проект, затем от стартера, то у нас, технически, будет циклическая зависимость. Не буду гадать, как в этом случае себя поведут системы сборки. Однако, в Вашем сценарии есть нарушение самой сути стартеров. Дело в том, что стартер, подразумевает наличие общего кода или функционала, который, как строительные кубики, можно взять и переиспользовать в разных сервисах. Если Вы "завязываете" стартер на конкретном проекте, то зачем вообще, в таком случае, использовать стартер? Разместите общую логику в самом проекте, и не будет никаких проблем. Как правильно, на мой взгляд, разрешить Ваш сценарий с кастомным стартером? Добавить отдельную аннотацию (например, @Logged), и реализовать в стартере её обработку - логгировать вызовы всех методов, отмеченных этой аннотацией. Ну, а затем, в проекте, подключить стартер, раскидать использование аннотации и готово. Ну и наконец, о логгировании - на всякий случай тоже скажу, логгировать ВСЁ - очень плохой вариант. 1) тупо вызовы методов не дадут читающему быстрого понимания что происходит. Это слишком техническая информация. 2) на высоконагруженных сервисах, подобный подход к логгированию быстро "забьёт эфир". А дальше, либо система логгирования откажет, либо будет очень сильно оставать. На мой взгляд, логгировать нужно с умом - добавлять то, что действительно нужно, и исключать то, что не нужно. Как это сделать? Каждый раз, когда будете добавлять вызов логгера, задайте себе вопрос - если система откажет, поможет ли информация в логе понять, что произошло. Будет ли информация в логе давать дополнительный контекст или она бесполезна. Надеюсь информация выше Вас, Илья, не перегрузился. Если будут ещё вопросы - обращайтесь 🤝
@Илья-ч1х5р
@Илья-ч1х5р 8 ай бұрын
@@fullstackguy ничего себе, какой развёрнутый ответ, спасибо. Сделал так, как вы сказали через аннотацию, всё получилось Информация для меня, вкатыша, очень полезная, спасибо вам огромное, обязательно запомню. На самом деле у меня появился еще вопрос) Допустим, я пометил аннотацией из кастомного стартера методы, которые хочу логгировать. Могу ли я сделать так, чтобы этот стартер работал только при указании, например @EnableLoggedConfig, в основном проекте в классе, где @SpringBootApplication. Если @EnableXXX не указана, то аннотации @Logged над классами основного модуля просто игнорируются Я уже прописал в кастомном стартере аннотацию @EnableLoggedConfig с @Import(CustomLoggedConfig.class), но всё равно указание аннотации ни на что не влияет, в любом случае стартер отрабатывает. Может знаете какие-нибудь источники? Не хочу вас нагружать вопросами, но вы сами сказали "если будут вопросы - задавайте"))
@МаксимКузичев-к8ч
@МаксимКузичев-к8ч 3 ай бұрын
Попробуй сделать стартер по нормальному, с мультимодулями. Хрен знает как такой билдить и юзать ))
@forfs9874
@forfs9874 Жыл бұрын
Привет! Делаю 1:1 по твоему уроку. Получаю ошибку при инициализации контекста Parameter 0 of constructor in com.example.demo.controllers.CopyrightController required a bean of type 'com.test.service.CopyrightGenService' that could not be found. Зависимость подтягивается Использую InteliJ IDEA community
@forfs9874
@forfs9874 Жыл бұрын
Проблему нашел) При использовании Spring Boot версии 2.6.7 (который ты используешь в туториале), работает всё ок. Как только я перехожу на версию 3.0.1 - контекст не стартует и не может найти конфигурацию бина. Не пойму почему так...
@forfs9874
@forfs9874 Жыл бұрын
Нашел решение. С версии Spring Boot 3.0.0 нужно создавать в META-INF еще папку spring, в которой будет файл org.springframework.boot.autoconfigure.AutoConfiguration.imports И там уже сразу перечисление полного пути до конфигураций
@fullstackguy
@fullstackguy Жыл бұрын
Молодчина,стоимость разобрался и еще решение для остальных оставил!!! Так держать!! 💪💪💪💪🤝
@TheSemenFarada
@TheSemenFarada 6 ай бұрын
Я понял как его создать, но не понял чем стартер отличаеться от просто jar файла в который вынесена какая то бизнес логика
@fullstackguy
@fullstackguy 6 ай бұрын
Вы все верно поняли - стартер это и есть jar, с вынесенной логикой. Единственное - этот jar содержит расширение Spring приложения. Он же может добавлять свои конфигурации и бины в контейнер спринга.
@MrAPPOLON123
@MrAPPOLON123 7 ай бұрын
а где гитхаб, ни в статье ни тут нет
@fullstackguy
@fullstackguy 7 ай бұрын
Приветствую Вадим! Для этого урока я не делал репозитрия с кодом. Вроде бы весь код довольно прост для воспроизведения. Но Ваше пожелание учту. Я планирую опубликовать статью о создании стартеров для Spring Boot 3 в следующий вторник. Для неё прикреплю репозиторий с кодом. Надеюсь, это поможет Вам лучше разобраться с темой. Хорошего дня! 👋
@MrAPPOLON123
@MrAPPOLON123 7 ай бұрын
@@fullstackguy спасибо, просто я несоклько раз создавал мавен квик старт и у меня нет помника, а вставить его неоткуда(
@fullstackguy
@fullstackguy 7 ай бұрын
@@MrAPPOLON123 Вадим, приветствую! Как и говорил ранее - вот обновлённая статья о создании стартеров в Spring Boot 3: fullstackguy.ru/blog/2024/04/08/how-to-make-spring-boot-3-starter/ А также - репозиторий с примером на GitHub, для Вашего удоства: github.com/anverbogatov/spring-boot-3-starter-demo Если будут ещё вопросы - смело обращайся в моей группе ВК - vk.com/fullstackguy Помогу, расскажу, разберу. Хорошего вечера! 👋
@floydzxc
@floydzxc 7 ай бұрын
@@fullstackguy приветствую , попробовал сделать точно так же как в вашей новой статье, всё написал, установил зависимость этого стартера в свой проект, я даже вижу в External libraries классы стартера которые я писал, но оно как будто не импортируется com.example.weather_spring_boot_starter.service.WeatherService weatherService; светится красным и класс не доступен, что может быть не так?
@fullstackguy
@fullstackguy 7 ай бұрын
А можете залить на гитхаб проекты и дать ссылку? Попробую помочь
Максим Гореликов, Кирилл Толкачев - Spring Boot Starter - как и зачем?
1:01:07
JPoint, Joker и JUG ru — Java-конференции
Рет қаралды 17 М.
Spring Boot 3: как создать свой стартер?
38:54
#fullstackguy - Обучение IT-профессии
Рет қаралды 1,5 М.
Twin Telepathy Challenge!
00:23
Stokes Twins
Рет қаралды 69 МЛН
Что такое CAP-теорема?
16:47
#fullstackguy - Обучение IT-профессии
Рет қаралды 6 М.
How Spring Boot works internally.
20:12
Sandeep Kudterkar Tech Geek
Рет қаралды 21 М.
Hand-made Spring Boot Starter | Timofey Zubkov | RU
1:02:01
Использование Spring Cloud для микросервисов на Spring Boot
40:49
Микросервисы со Spring Boot & Spring Cloud (Александр Бармин)
47:01