Конструктор классов в lazy-init

Я создаю компонент с помощью lazy-init = "true", но не хочу, чтобы вызывался конструктор класса. Но как-то и с lazy-init он вызывается.

<bean id = "abc" class = "a.b.c.UtilClass" lazy-init = "true" />

Может ли кто-нибудь помочь мне перестать вызывать конструктор класса при запуске? Я хочу, чтобы это вызывалось всякий раз, когда это необходимо.

Вы не можете Создайте bean-компонента, не запустив его конструктор, что не имеет смысла (создание bean-компонента == создание нового экземпляра его класса, включая выполнение его конструктора). Однако вы можете использовать одноэлементный компонент или компонент с любой другой областью видимости для многократного повторного использования одного и того же экземпляра компонента.

Aaron 30.03.2018 14:58
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
270
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычно это означает, что существует зависимость от вашего bean-компонента, который также создается. Классическая цепочка зависимостей - это синглтон, который должен быть загружен (например, контроллер Spring MVC), который ссылается на служебный компонент, который затем ссылается на компонент DAO, поэтому все они должны быть созданы.

Компоненты @Lazy или lazy-init становятся более полезными, если на них ссылаются из прототипов или сеансовых компонентов, или из компонентов, которые создаются во время выполнения через ObjectFactory.

Если вы сомневаетесь, как цепочка зависимостей достигает вашего bean-компонента, попробуйте поставить точку останова в конструкторе. Обычно в стеке вызовов в классах BeanFactory есть несколько методов resolveDependency() (например, DefaultListableBeanFactory). Поищите там, например, значения переменных beanName.

Другие вопросы по теме