As mentioned in the answers to this question, Spring can invoke private constructors through reflection.
Generally when we create a class with a private constructor, we use it for preventing instantiation outside of the class as in the case of a Singleton class, or for preventing instantiation of classes with static utility methods/constants.
What is the reason why Spring allows beans with private constructors to be instantiated ?