Spring Cloud: централизуйте конфигурацию с помощью Spring Cloud Config вместо того, чтобы копировать
Используйте Spring Cloud Config для централизованного управления конфигурацией, а не копируйте
#SpringBoot #JavaDev
👉 Java Portal
application.properties в каждый сервис.Используйте Spring Cloud Config для централизованного управления конфигурацией, а не копируйте
application.properties повсюду.// — 1) Config Server: одно место, которое обслуживает конфигурацию всех сервисов —
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
public static void main(String[] args) {
new SpringApplicationBuilder(ConfigServerApp.class).run(args);
}
}
// — 2) application.yml сервера (раздаёт файлы из classpath) —
// spring.profiles.active: native # локальные файлы, Git не нужен
// spring.cloud.config.server.native.search-locations: classpath:/config
// server.port: 8888
// — 3) /config/client-service.yml (конфигурация для "client-service") —
// myproperty: value
// — 4) Клиент: загружает конфигурацию с сервера при запуске —
// spring.application.name: client-service
// spring.config.import: optional:configserver:http://localhost:8888
@Component
public class GreetingClient {
@Value("${myproperty}") // значение получено с Config Server
private String myProperty;
}
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Java CompletableFuture: цепочка асинхронных шагов без блокировки потока при каждом I/O вызове.
Цепочка: supplyAsync, thenApply, thenCompose, thenAccept (получить пользователя, затем заказы)
Обрабатывайте сбои через exceptionality, не давайте асинхронным ошибкам бесшумно исчезать
Запускайте независимые вызовы параллельно, объединяйте через thenCombine когда оба завершатся
#JavaDev
👉 Java Portal
Цепочка: supplyAsync, thenApply, thenCompose, thenAccept (получить пользователя, затем заказы)
Обрабатывайте сбои через exceptionality, не давайте асинхронным ошибкам бесшумно исчезать
Запускайте независимые вызовы параллельно, объединяйте через thenCombine когда оба завершатся
#JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: Вы можете реализовать оптимистическую блокировку с помощью аннотации
✅ Идеально подходит, когда:
операции чтения выполняются часто;
операции записи происходят сравнительно редко;
конфликты возникают редко.
❌ Не подходит, когда:
конфликты происходят часто;
требуется строгая последовательная обработка (strict serialization).
#SpringBoot #JavaDev
👉 Java Portal
@Version.✅ Идеально подходит, когда:
операции чтения выполняются часто;
операции записи происходят сравнительно редко;
конфликты возникают редко.
❌ Не подходит, когда:
конфликты происходят часто;
требуется строгая последовательная обработка (strict serialization).
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
💡 Java: sealed types позволяют закрыть граф наследования с помощью
Это даёт полный контроль над тем, какие классы или интерфейсы могут наследоваться от базового типа.
✅ Наследоваться от
✅ Каждый разрешённый подтип должен быть объявлен как
При этом
#JavaDev
👉 Java Portal
permits.Это даёт полный контроль над тем, какие классы или интерфейсы могут наследоваться от базового типа.
✅ Наследоваться от
sealed-класса или интерфейса могут только типы, перечисленные в permits.✅ Каждый разрешённый подтип должен быть объявлен как
final, sealed или non-sealed.При этом
non-sealed — это своего рода «точка выхода»: начиная с такого класса, ограничения снимаются, и наследование снова становится открытым для любых потомков.#JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Java: Используйте Deque вместо Stack для реализации стека (LIFO — last in, first out, «последним пришёл — первым вышел»).
✅ Stack — это устаревший класс. Он наследуется от Vector и синхронизирует каждую операцию.
✅ Deque поддерживает те же методы: push, pop и peek.
✅ ArrayDeque работает быстрее, чем Stack.
#JavaDev
👉 Java Portal
✅ Stack — это устаревший класс. Он наследуется от Vector и синхронизирует каждую операцию.
✅ Deque поддерживает те же методы: push, pop и peek.
✅ ArrayDeque работает быстрее, чем Stack.
#JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Используйте
✅ Он проверяет, ссылаются ли два объекта
#Java #JavaDev
👉 Java Portal
Files.isSameFile(path1, path2), чтобы проверить, указывают ли два пути на один и тот же файл. Метод также учитывает симлинки.Path на один и тот же реальный файл в файловой системе.#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
💡 Java — не стоит считать, что десятичным разделителем всегда будет точка.
✅ Шаблоны вроде
✅ Нужные разделители можно задать через
✅ В Италии число будет выглядеть как
#Java #JavaDev
👉 Java Portal
✅ Шаблоны вроде
#,###.## всё равно используют символы, зависящие от локали.✅ Нужные разделители можно задать через
DecimalFormatSymbols(locale).✅ В Италии число будет выглядеть как
1.234,56, а в США — 1,234.56.#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1