В контексте весны, инициализация и реализация одинаковы? - PullRequest
0 голосов
/ 13 декабря 2018

На языке программирования String str = new String ();// instantiation str = "hello";// initialization

Теперь, весной, существует концепция отложенной инициализации.Означает ли это, что объект лениво создается или лениво инициализируется?

Или же, атрибут name lazy-init или аннотация @lazy вводят в заблуждение тем, что они на самом деле лениво создаются?

PS Насколько я понимаю, начиная с версии 4.3, @lazy можно использовать как для отложенной инициализации, так и для отложенного разрешения зависимостей.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Согласно this (документация Spring), @Lazy включает в себя задержку как создания, так и инициализации bean-компонента:

По умолчанию реализации ApplicationContext с готовностью создают и настраивают все синглтоныбобы как часть процесса инициализации.Как правило, это предварительное создание является желательным, потому что ошибки в конфигурации или окружающей среде обнаруживаются немедленно, в отличие от часов или даже дней спустя.Когда такое поведение нежелательно, вы можете предотвратить предварительное создание экземпляра одноэлементного компонента, пометив определение компонента как инициализированный ленивым.Инициализированный ленивый bean-компонент сообщает контейнеру IoC о создании экземпляра bean-компонента при первом запросе, а не при запуске.

0 голосов
/ 13 декабря 2018

Что касается вашего примера

String str = new String();
str = "hello";

Включает в себя как реализацию, так и инициализацию.Первая строка создает экземпляр String и инициализирует ее пустой строкой, что означает, что если вы сделаете System.out.println, вы увидите пустое значение, а не null.

Вторая строка создает экземпляр константы String в пуле строк и инициализирует str с этим значением.

По вашему вопросу о Spring Lazy Initialization, Spring Context использует отложенную инициализацию для ускорения времени запуска.В Spring Bean in инициализируется только тогда, когда его сначала запрашивают из контекста Spring.Помните, что инициализация всегда происходит после создания экземпляра.

...