☕️ Spring Core: Зачем нужна аннотация
Если вы работаете со Spring, вы видите эту аннотацию постоянно. Но чем она отличается от простого навешивания
💡 Что это такое?
Аннотация
🛠 Как это выглядит?
🔥 Когда использовать
Это самый частый вопрос на собеседованиях.
1. Используйте
- Это ваш класс. Вы имеете доступ к исходному коду.
- Вам нужна магия автоматического сканирования (
2. Используйте
- Сторонние библиотеки. Вы не можете зайти в класс
- Сложная логика создания. Если создание объекта требует условий (
⚙️ Фишки
- Имена: По умолчанию имя бина совпадает с именем метода. Можно изменить:
- Init/Destroy: Можно указать методы, которые сработают при создании или удалении бина:
- Зависимости: Если методу с
Итог:
#Java #Spring #SpringBoot #Coding #Education
📲 Мы в MAX
👉@BookJava
@Bean?Если вы работаете со Spring, вы видите эту аннотацию постоянно. Но чем она отличается от простого навешивания
@Component над классом? Давайте разберем.💡 Что это такое?
Аннотация
@Bean используется в методах конфигурационных классов (помеченных @Configuration). Она говорит Spring-контейнеру:"Эй, Spring! Выполни этот метод, возьми то, что он вернет, и сохрани этот объект у себя в контексте (ApplicationContext). Управляй им как бином".
🛠 Как это выглядит?
@Configuration
public class AppConfig {
// Мы явно создаем объект и отдаем его Спрингу
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper(); // Например, библиотека Jackson
}
}
🔥 Когда использовать
@Bean, а когда @Component?Это самый частый вопрос на собеседованиях.
1. Используйте
@Component (и @Service, @Repository), когда:- Это ваш класс. Вы имеете доступ к исходному коду.
- Вам нужна магия автоматического сканирования (
component scanning). Вы просто ставите аннотацию над классом, и Spring сам его находит.2. Используйте
@Bean, когда:- Сторонние библиотеки. Вы не можете зайти в класс
ObjectMapper (из Jackson) или AmazonS3Client и написать там @Component, потому что это чужой код (read-only). Чтобы добавить такой объект в контекст Spring, вы создаете для него метод с @Bean.- Сложная логика создания. Если создание объекта требует условий (
if/else) или сложной конфигурации, проще описать это в методе явно.⚙️ Фишки
@Bean- Имена: По умолчанию имя бина совпадает с именем метода. Можно изменить:
@Bean("myCoolBean").- Init/Destroy: Можно указать методы, которые сработают при создании или удалении бина:
@Bean(initMethod = "init", destroyMethod = "cleanup").- Зависимости: Если методу с
@Bean нужны аргументы, Spring автоматически найдет и подставит их из контекста.Итог:
@Component - для автоматизации своих классов, @Bean - для ручного контроля и чужих библиотек.#Java #Spring #SpringBoot #Coding #Education
👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
17 декабря(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет Spring Framework💡
Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в
📲 Мы в MAX
👉@BookJava
Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в
java.util.Optional. Таким образом вы сообщаете, что этот бин является необязательным, избегаете исключения, если он не существует, и можете аккуратно обработать его отсутствие с помощью Optional API.👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
🗓 25 декабря в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework».
Интеграционные тесты в Spring: тестовый контекст, репозитории (JDBC/JPA), сервисы и транзакции.
На вебинаре:
Кому будет полезно:
Backend-разработчикам на Java, начинающим осваивать тестирование Spring-приложений.
Что вы получите:
Разберётесь в базе интеграционного тестирования со Spring-контекстом и сможете написать простые тесты для репозиториев и сервисов.
🔗 Ссылка на регистрацию: https://vk.cc/cSrDoD
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧵 String.join(): Склеиваем строки без боли
Помните те времена, когда для объединения списка строк через запятую приходилось писать циклы, использовать
Начиная с Java 8, у нас есть элегантный статический метод
🛠 Как это работает?
Метод принимает разделитель (delimiter) и элементы, которые нужно склеить. Элементами могут быть как просто перечисление строк (varargs), так и любая коллекция (Iterable).
1️⃣ Пример с перечислением строк:
2️⃣ Пример с коллекцией (List, Set):
🧐 Важные нюансы:
- Null-safe (частично): Если сам список или массив равен
- Под капотом: Метод использует
🚀 Когда использовать?
Используйте
Если же вы работаете со Stream API, то лучше подойдет коллектор:
#Java #Core #Tips #CleanCode
📲 Мы в MAX
👉@BookJava
Помните те времена, когда для объединения списка строк через запятую приходилось писать циклы, использовать
StringBuilder, а потом еще и аккуратно удалять последний разделитель? 🤯Начиная с Java 8, у нас есть элегантный статический метод
String.join, который делает код чистым и читаемым.🛠 Как это работает?
Метод принимает разделитель (delimiter) и элементы, которые нужно склеить. Элементами могут быть как просто перечисление строк (varargs), так и любая коллекция (Iterable).
1️⃣ Пример с перечислением строк:
String result = String.join(" -> ", "Wake up", "Code", "Sleep");
System.out.println(result);
// Вывод: Wake up -> Code -> Sleep
2️⃣ Пример с коллекцией (List, Set):
List<String> langs = Arrays.asList("Java", "Kotlin", "Groovy");
// Больше никаких циклов!
String output = String.join(" | ", langs);
System.out.println(output);
// Вывод: Java | Kotlin | Groovy
🧐 Важные нюансы:
- Null-safe (частично): Если сам список или массив равен
null, вы получите NullPointerException. Но если null является одним из элементов списка, метод просто преобразует его в строку "null".- Под капотом: Метод использует
StringJoiner (еще один класс из Java 8), что обеспечивает неплохую производительность по сравнению с обычной конкатенацией через +.🚀 Когда использовать?
Используйте
String.join, когда у вас уже есть коллекция или массив строк, и вам нужно быстро собрать их в одну строку.Если же вы работаете со Stream API, то лучше подойдет коллектор:
.collect(Collectors.joining(", "))#Java #Core #Tips #CleanCode
👉@BookJava
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4