Я создаю компонент с помощью lazy-init = "true", но не хочу, чтобы вызывался конструктор класса. Но как-то и с lazy-init он вызывается.
<bean id = "abc" class = "a.b.c.UtilClass" lazy-init = "true" />
Может ли кто-нибудь помочь мне перестать вызывать конструктор класса при запуске? Я хочу, чтобы это вызывалось всякий раз, когда это необходимо.




Обычно это означает, что существует зависимость от вашего bean-компонента, который также создается. Классическая цепочка зависимостей - это синглтон, который должен быть загружен (например, контроллер Spring MVC), который ссылается на служебный компонент, который затем ссылается на компонент DAO, поэтому все они должны быть созданы.
Компоненты @Lazy или lazy-init становятся более полезными, если на них ссылаются из прототипов или сеансовых компонентов, или из компонентов, которые создаются во время выполнения через ObjectFactory.
Если вы сомневаетесь, как цепочка зависимостей достигает вашего bean-компонента, попробуйте поставить точку останова в конструкторе. Обычно в стеке вызовов в классах BeanFactory есть несколько методов resolveDependency() (например, DefaultListableBeanFactory). Поищите там, например, значения переменных beanName.
Вы не можете Создайте bean-компонента, не запустив его конструктор, что не имеет смысла (создание bean-компонента == создание нового экземпляра его класса, включая выполнение его конструктора). Однако вы можете использовать одноэлементный компонент или компонент с любой другой областью видимости для многократного повторного использования одного и того же экземпляра компонента.