It says in Java's documentation page for PostConstruct that
Only one method can be annotated with this annotation
But I just tried annotating three methods of a standalone application with PostConstruct. No compile errors, and all three of them are invoked and executed smoothly.
So what am I missing? In what kind of class can and cannot exist multiple PostConstruct annotations?
I tested with one class with 2 @PostConstruct, then I get the error WELD-000805: Cannot have more than one post construct method But it's ok if I have multiple @PostConstruct, each in one class. So I guess this sentence means: Only one method per class can be annotated with this annotation.
This probably depends on the CDI implementation you are using. You did inject the object, where you have the annotations, didn't you?
I just tried it with WELD, which throws an exception as expected:
Yes, it's seem Spring doesn't follow this restriction. I have found code to process this annotation which is
InitDestroyAnnotationBeanPostProcessor
, and the specific method:So, spring support multi PostConstruct