We wanted to override a setting set by one of the initializers. init() is called before the initializers run, so it is not possible to do it there. initializeComponents() (the method that runs the initializers) is final, so can't do it there either. Which only leaves validateInit(), but this method is really not meant for that. I agree that you should not rely on the exact order in which initializers are loaded, but as I said, the context classloader always comes last. This at least gives you a chance to define your own initializer that runs after the others. As far as I'm concerned, that's the only usecase this is supposed to support.
Of course, this could also be solved by another init method, which is called right after initializeComponents(). Perhaps a componentsInitialized() method?