Spring Boot: если в приложении для REST-вызовов используется RestTemplate, таймауты можно централизованно настроить через RestTemplateBuilder.
Также можно завести больше одной конфигурации таймаутов через аннотацию @Qualifier:
👉 Java Portal
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(Duration.ofSeconds(3))
.setReadTimeout(Duration.ofSeconds(5))
.build();
}
}
Также можно завести больше одной конфигурации таймаутов через аннотацию @Qualifier:
@Bean
@Qualifier("slowServiceRestTemplate")
public RestTemplate slowServiceRestTemplate(RestTemplateBuilder builder) {
return builder
.setConnectTimeout(Duration.ofSeconds(5))
.setReadTimeout(Duration.ofSeconds(30))
.build();
}
@Autowired
@Qualifier("slowServiceRestTemplate")
private RestTemplate restTemplate;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Залетел полезняк для тех, кто готовится к собесам по Java или просто хочет быстро освежить базу.
На InterviewPrep выложили Java Notes (по сути мини-гайд/конспект) и там закрывают самые частые темы:
Можно прям как чеклист прогнать перед интервью.
👉 Java Portal
На InterviewPrep выложили Java Notes (по сути мини-гайд/конспект) и там закрывают самые частые темы:
история Java
JDK / JRE / JVM (как это вообще устроено)
Collections
управление памятью
многопоточность
обработка исключений
типы классов
типы данных и ключевые слова
Можно прям как чеклист прогнать перед интервью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6
В Spring Boot можно задать таймаут для graceful shutdown через настройку spring.lifecycle.timeout-per-shutdown-phase.
Graceful shutdown помогает избежать резких обрывов HTTP-запросов и преждевременных остановок потоков.
👉 Java Portal
Graceful shutdown помогает избежать резких обрывов HTTP-запросов и преждевременных остановок потоков.
server:
shutdown: graceful
spring:
lifecycle:
timeout-per-shutdown-phase: 20s
# Сервер будет завершаться корректно (graceful).
# Даёт до 20 секунд на завершение запросов и работы бинов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Про модификаторы доступа в Java (public / default / protected / private)
private - только для себя
public - откуда угодно
protected - вроде бы для подклассов?
На самом деле тут всегда начинается каша, если не смотреть на вопрос "откуда и кто вызывает" по двум осям: пакет и наследование.
Чтобы нормально понять модификаторы, я подумал: пусть будет статья с моделью "якинику-ресторан".
Что такое модификаторы на самом деле:
Модификаторы - это не про "силу".
Это правила, откуда можно получить доступ.
В Java доступ всегда определяется двумя вещами:
* тот же пакет?
* есть наследование?
Модель с рестораном якинику:
* YakinikuShop: сам ресторан (родительский класс)
* LocalStaff: персонал этого же ресторана
* Manager: управляющий (дочерний класс)
* BranchStaff: персонал филиала (другой пакет + наследник)
* Customer: обычный клиент
Родительский класс: YakinikuShop.java
Почему askManagerToOpenSafe "особенный"
askManagerToOpenSafe - public.
То есть вызвать его может кто угодно.
Но откроется сейф или нет - решает проверка instanceof внутри.
public != "можно всё"
public = "вход виден и доступен"
Суть public вот такая:
*✅ может вызвать клиент
*✅ может вызвать персонал
*✅ может вызвать кто-то из другого магазина
"Встать у входа и попросить" можно, но:
*❌ если ты не управляющий - тебя сразу разворачивают
*❌ private-сейф напрямую трогать нельзя
Таблица доступа:
Клиент:
public:✅
default:❌
protected:❌
private:❌
Персонал этого же ресторана (тот же пакет):
public:✅
default:✅
protected:✅
private:❌
Персонал филиала (другой пакет, но наследник):
public:✅
default:❌
protected:✅
private:❌
Управляющий (дочерний класс):
public:✅
default:✅
protected:✅
private:❌
Сам класс YakinikuShop:
public:✅
default:✅
protected:✅
private:✅
👉 Java Portal
private - только для себя
public - откуда угодно
protected - вроде бы для подклассов?
На самом деле тут всегда начинается каша, если не смотреть на вопрос "откуда и кто вызывает" по двум осям: пакет и наследование.
Чтобы нормально понять модификаторы, я подумал: пусть будет статья с моделью "якинику-ресторан".
Что такое модификаторы на самом деле:
Модификаторы - это не про "силу".
Это правила, откуда можно получить доступ.
В Java доступ всегда определяется двумя вещами:
* тот же пакет?
* есть наследование?
Модель с рестораном якинику:
* YakinikuShop: сам ресторан (родительский класс)
* LocalStaff: персонал этого же ресторана
* Manager: управляющий (дочерний класс)
* BranchStaff: персонал филиала (другой пакет + наследник)
* Customer: обычный клиент
Родительский класс: YakinikuShop.java
package shop;
public class YakinikuShop {
public int counter = 30; // Стойка/места: видно всем
int staffRoom = 10; // Комната персонала: только для своего пакета
protected int kitchen = 20; // Кухня: свой пакет или наследники
private int safeMoney = 100; // Сейф: даже управляющему напрямую нельзя
public void askManagerToOpenSafe(Object person) {
if (!(person instanceof Manager)) {
System.out.println("❌ Только управляющий может открыть сейф");
return;
}
openSafe();
}
private void openSafe() {
System.out.println("open safe: " + safeMoney);
}
}
Почему askManagerToOpenSafe "особенный"
askManagerToOpenSafe - public.
То есть вызвать его может кто угодно.
Но откроется сейф или нет - решает проверка instanceof внутри.
public != "можно всё"
public = "вход виден и доступен"
Суть public вот такая:
*
*
*
"Встать у входа и попросить" можно, но:
*
*
Таблица доступа:
Клиент:
public:
default:
protected:
private:
Персонал этого же ресторана (тот же пакет):
public:
default:
protected:
private:
Персонал филиала (другой пакет, но наследник):
public:
default:
protected:
private:
Управляющий (дочерний класс):
public:
default:
protected:
private:
Сам класс YakinikuShop:
public:
default:
protected:
private:
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3👍1🔥1