Qual é o uso de faces-config.xml no JSF 2?

Após o grande suporte do JSF 2 para annotations, eu estou querendo saber o que eu usaria o faces-config.xml para. Qual é a sua importância agora?

Em outras palavras, quais são as configurações que só podem ser feitas através do faces-config.xml e não através de annotations?

Agora tudo o que estou usando é declarar o EL Resolvedor da Spring.

     org.springframework.web.jsf.el.SpringBeanFacesELResolver    

Ainda é para ser usado para muitas coisas que não podem ser anotadas. Por exemplo, mensagens de validação personalizadas do JSF:

  com.example.i18n.messages  

Um pacote i18n global (para que você não precise declarar em todas as visualizações):

   com.example.i18n.Text text   

Locais do i18n suportados explicitamente (para que os não declarados sejam ignorados mesmo que haja um pacote de mensagens ou pacote de resources para ele):

   en nl es de   

Manipuladores de exibição personalizados:

  com.example.SomeViewHandler  

Ouvintes de fase (ainda não há anotação para isso):

  com.example.SomePhaseListener  

Feijões gerenciados que não podem ser anotados (o abaixo dá a Date atual em #{now} ):

  Current date and time now java.util.Date request  

Fábricas personalizadas, como a fábrica de manipuladores de exceções personalizadas (também permite fábricas para FacesContext , ExternalContext , LifeCycle e muito mais para que você possa fornecer sua implementação personalizada):

  com.example.SomeExceptionHandlerFactory  

Para nomear apenas os mais usados. Se você tiver o preenchimento automático de tags faces-config.xml em seu IDE, poderá encontrá-los todos. Somente os beans gerenciados, validadores, conversores, componentes, renderizadores e casos de navegação ponto-a-ponto não são mais necessários graças às novas annotations e à navegação implícita.