RestFul services and JSF works with 2 differents patterns:
spring MVC offers RestFul service functionalities. RestFul services are SOA (they provide data) and not "presentation-oriented". It means the data are send from the server to the client, and the client is in charge to render them. A common template is to implement the client with Html and Javascript to render the view in a web-browser (there are a lot of javascript framework which help in that task: AngularJS, BackboneJS, JQuery...). You may also consume these services from other client (java client, PHP, C#) and use these data in other services.
The spring MVC API may also use the spring-web APIS to render views in HTML on server-side using template-engines like JSP, Freemarker, Velocity etc... In this case, the content send from server to client is not "data-oriented" but already rendered (it is generally rendered as an HTML stream, ready to be displayed by the client/browser)
JSF encapsulate this whole client-server-flow by getting data and render them to the client using JSF-templating and bean-management. This process is implemented by a 7 steps lifecycle. This lifecycle hide from the developpers the client-server communication process (but it internally use javascript/Mojarra on client side, and servlets on server side to implement this lifecycle). It is another way of managing client-server MVC pattern.
These are 2 differents "philosophies". An advantage of the RestFul architecture is that it is SOA: they are made to provide interoperability using standards data-format (Json, XML).
Interoperability help you to change clients or server implementation without impacting one or the other (you may re-implement your client using another technology-stack in the future, without having to develop the server again. Or you may implement differents clients with different technologies : C#, .net, Java, Javascript etc)
With JSF, You can achieve the same goal implementing a format specific renderer. But I don't think it is the main use of JSF to be used as SOA.
About the dependency-injection used, the J2EE JSF framework will use the J2EE DI API (it is important to note that the J2EE implementation of DI framework required a J2EE-application-server to work), Spring is naturally based on the DI pattern and use its own implementation (which can run in a servlet-container).
The JSF implementation from spring-web, (see the spring documentation) use the spring core DI implementation. I think it offers the same possibilities as the J2EE implementation (excepting that it does not require an application-server, only a servlet container)