Amit
Amit

Reputation: 1672

Spring default-lazy-init does not seems to work, i see Pre-instantiating of singletons

I am defining default-lazy-init="true" in the spring context file inside beans tag but when I start tomcat, I see my beans are getting instantiated. here is what it shows in log -

org.springframework.beans.factory.support.DefaultListableBeanFactory (DefaultListableBeanFactory.java:555) - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@ac6fb1: defining beans [dataSource,my other beans in app.......

Am I missing something ?

Upvotes: 4

Views: 4712

Answers (1)

Sotirios Delimanolis
Sotirios Delimanolis

Reputation: 279990

Even if a bean is declared to be lazy initialized, it will still be initialized if another bean depends on it.

I'm going to assume from your log, that the bean in question is dataSource. I will also assume you have other beans that depend on dataSource (otherwise it wouldn't be very useful). If the context initializes the other beans and finds that, for example, it needs to autowire the dataSource bean, it will have to first initialize it.

If you want full lazy initialization, you will have to make every bean in some object graph be lazily initialized.

Upvotes: 7

Related Questions