Spring Boot: можно использовать
Что это делает:
▪️ Делает 3 ретрая, если вылетают указанные исключения.
▪️ Стартует с задержки 2 секунды и удваивает ее на каждой попытке (экспоненциальный backoff).
▪️ Если все попытки провалились, вызывает recover().
👉 Java Portal
@Retryable, чтобы переживать нестабильность внешних сервисов.@Service
public class ExtService {
@Retryable(
value = { HttpServerErrorException.class, ResourceAccessException.class },
maxAttempts = 3,
backoff = @Backoff(delay = 2000, multiplier = 2)
)
public ExtServiceResponse process(ExtServiceRequest request) {
// Call external payment gateway
return restTemplate.postForObject("https://ext-gateway/api/service", request,
ExtServiceResponse.class);
}
@Recover
public ExtServiceResponse recover(Exception e, ExtServiceRequest request) {
// Fallback logic after retries are exhausted
log.error("Failed after retries: {}", e.getMessage());
return new ExtServiceResponse("FAILED");
}
}
Что это делает:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
Вопрос для собеседования по Spring Boot:
Какой будет результат запуска, если активный профиль не указан?
❓ Spring по умолчанию выберет бин
❓ Spring выберет первый бин в алфавитном порядке
❓ Приложение упадет с
❓ Бины не будут созданы, но приложение запустится
❓ Будут созданы оба бина -
👉 Java Portal
Какой будет результат запуска, если активный профиль не указан?
DevNotificationServiceNoSuchBeanDefinitionExceptionNoUniqueBeanDefinitionExceptionPlease open Telegram to view this post
VIEW IN TELEGRAM
👍2
Java tip : старайся не шарить данные между потоками.
✅ Используй иммутабельные объекты
✅ Либо пусть потоки общаются через сообщения, не трогая общий state напрямую и не мутируя shared-состояние
👉 Java Portal
// С иммутабельными объектами:
record Book(String title, int price) {} // Иммутабельный
public class BookJob implements Runnable {
private final Book book;
.... // конструктор
@Override
public void run() {
System.out.println(book.title() + " " + book.price());
}
}
// Обмен сообщениями:
...
new Thread(() -> {
try {
queue.put("mess1");
} catch (InterruptedException e) {}
}).start();
...
new Thread(() -> {
try {
String mess = queue.take();
} catch (InterruptedException e) {}
}).start();
Please open Telegram to view this post
VIEW IN TELEGRAM
1🌚1
Какой SQL-запрос будет выполнен при вызове метода
1.
2.
3.
4.
5.
👉 Java Portal
findByEmail()?1.
SELECT * FROM users WHERE email LIKE ?2.
SELECT id, name, email FROM users WHERE email LIKE ?3.
SELECT * FROM users WHERE email = ? LIMIT 14.
SELECT * FROM users WHERE email = ?5.
SELECT * FROM users WHERE email = emailPlease open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: используй
✅ Одна из возможных причин: кастомная конфигурация конфликтует с дефолтной.
👉 Java Portal
@SpringBootApplication(exclude = …), чтобы отключить конкретные классы автоконфигурации.Please open Telegram to view this post
VIEW IN TELEGRAM
java.evolved это подборка, где каждый старый паттерн из Java показан рядом с его современным заменителем, прямо бок о бок.
👍 👍 👍
👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
java.evolved
java.evolved Code Snippets | java.evolved
A collection of modern Java code snippets. Every old Java pattern next to its clean, modern replacement — side by side.
❤8