I've read the excellent and thorough Spring documentation here on integrating JSF with Spring. I've read several answers on the subject on SO such as this one and this one. These completely answer how and why you would integrate these two containers, most importantly how to configure faces-config.xml. I have several production applications that integrate Spring 3.X and Primefaces 6.X beautifully. However I still don't quite understand what's going on under the covers and what the faces-context.xml el-resolver syntax is doing and I'd like to. I think both containers are running but since I have no JSF annotations, the JSF container is sort of idling in the background, not instantiating or managing anything, only providing a rich component library, while the Spring container does the heavy lifting. Is the JSF container delegating to Spring somehow? Are both containers/contexts "contained" within the app server container/context, or do all three operate independently?
This all begs the question, why two containers (really three, since the app server is a container, too) with one doing nothing? Will we ever get to a place where there is only one container, and frameworks like Spring and JSF simply use the app server container?