С
Секреты Java
описание
Обсуждаем Java, архитектуру, фреймворки и всё, о чем должны говорить разработчики. #C3MRY Владелец: Реклама на бирже: https://telega.in/c/java_secrets
9 292
подписчиков
Охват к подписчикам
36,0%
ERR
Реакции к просмотрам
0,55%
822 на 37 постов
Пересылки к просмотрам
0,64%
964
Постов в день
0,0
всего 37
Где отзываются чаще
доля реакций к просмотрам- 28 янв. 2024 г.без подписи1,40%
- 12 июл. 2024 г.без подписи0,89%
- 7 окт. 2024 г.без подписи0,78%
- 19 авг. 2024 г.без подписи0,73%
- 25 сент. 2024 г.без подписи0,73%
- 6 сент. 2024 г.без подписи0,70%
- 16 нояб. 2024 г.Spring аннотация @Lazy Как известно Spring создает бины сразу при поднятии контекста и со скоупом Singletone. Но бывают случаи, когда мы не хотим создавать его сразу. И Spring дает нам такую возможность с аннотацией @org.springframework.context.annotation.Lazy. Эта аннотация используется в Spring Framework для отложенной инициализации бина. Это означает, что бин будет создан только при первом обращении к нему. Мы можем использовать @Lazy над классом конфигурации: @Lazy @Configuration public class MyConfiguration { @Bean public MyBean myBean() { return new MyBean(); } ... } Это значит что все бины создаваемые в этом классе будут инициализироваться при первом обращении к ним. Либо мы можем повесить @Lazy на метод с @Bean, чтобы указать только один бин для ленивой загрузки. Рассмотрим пример с @Autowired: @Lazy @ToString @Component public class Apple { public Apple() { System.out.println( "Apple bean initialized"); } } У нас есть класс с аннотацией @Lazy, который так же помечен как @Component. И есть класс куда мы инжектим этот бин: @Component public class Bag { public Apple apple; @Autowired public Bag(@Lazy Apple apple) { this.apple = apple; System.out.println( "Bag bean initialized"); } } Обратите внимание, что @Lazy так же и над аргументом конструктора (если инжектим через него), это обязательно! Мы можем поднять контекст и посмотреть, что происходит: @SpringBootApplication public class Application { public static void main(String[] args) { var context = SpringApplication .run(Application.class, args); System.out.println("Context is up"); Bag bag = context.getBean(Bag.class); System.out.println("Bag is gotten"); System.out.println(bag.apple); } } Вывод будет следующим: Bag bean initialized Context is up Bag is gotten Apple bean initialized Apple() Как мы видим - сначала создастся бин класса Bag и поднимется контекст, и только после обращения к бину Apple через Bag, бин Apple проинициализируется. Использование аннотации @Lazy особенно полезно в больших приложениях, где не все бины нужны сразу и можно сэкономить ресурсы, инициализируя их только по мере необходимости.0,70%
- 19 июл. 2024 г.без подписи0,69%
- 21 нояб. 2024 г.Java - компилируемый или интерпретируемый язык? Java - это язык программирования, который обычно описывают как "компилируемый и интерпретируемый". Давайте разберемся, что это означает и как это влияет на процесс создания и запуска Java программ. Компиляция: ▫️Когда вы пишете Java код, вы его пишите в файл с расширением .java. ▫️Этот файл с исходным кодом передается компилятору Java (например, javac идущий в JDK), который преобразует его в байт-код. ▫️В результате компиляции создаются файлы классов с расширением .class, содержащие байт-код, который представляет собой набор инструкций, понятных JVM. Пример компиляции Java кода: javac MyClass.java Программа еще не запущена! Компиляция - это все еще процесс разработки. Интерпретация: ▫️Когда вы запускаете программу на Java, созданный байт-код передается JVM. ▫️JVM пошагово (построчно, пооператорно), в реальном времени, преобразует байт-код в машинный код и выполняет его. ▫️В процессе выполнения JVM может также проводить оптимизацию и JIT (Just-In-Time) компиляцию некоторых частей кода в машинный код для повышения производительности (JIT компиляция - отдельная тема). Пример запуска Java программы: java MyClass Вот теперь мы запустили программу. Вывод: Java использует смешанный подход, объединяя в себе компиляцию и интерпретацию. Это позволяет создавать эффективные и переносимые программы, которые могут быть запущены на различных платформах без необходимости перекомпиляции исходного кода.0,66%
- 17 нояб. 2024 г.Fluent Interface Fluent Interface (Текучий интерфейс) — это шаблон проектирования, который позволяет создавать код, читающийся как текст на естественном языке. Он достигается путем создания методов, которые возвращают ссылку на this объект, позволяя вызывать их в цепочке.0,66%
- 12 авг. 2024 г.без подписи0,65%
- 18 сент. 2024 г.без подписи0,64%