Is there any difference between using the @PostConstruct annotation and declaring the same method as init-method in Spring XML configuration?
Is there any difference between using the @PostConstruct annotation and declaring the same method
Share
No practically I don’t think there is any difference but there are priorities in the way they work.
@PostConstruct,init-methodare BeanPostProcessors.@PostConstructis a JSR-250 annotation whileinit-methodis Spring’s way of having an initializing method.@PostConstructmethod, this will be called first before the initializing methods are called.afterPropertiesSet, first@PostConstructis called, then theafterPropertiesSetand theninit-method.For more info you can check Spring’s reference documentation.
Before JSR 250 specs , usage of init-method in xml was preferred way , as it decouples java classes (beans) from any spring specific classes/annotations.So if you are building a library that does not need to be dependent on spring infrastructure beans then use of init-method was preferred.During creation method u can specify the method that needs to be called as initialization method.
Now with introduction of JSR 250 specs in Java EE and spring support of these annotations , dependency on spring framework has been reduced to a certain extent.
But i have to admit that addition of these things increase the readability of code.So there are pros and cons both approaches.