CDI를 사용하십시오.
JSF 2.3 당으로 @ManagedBean되어 사용되지 . 사양 문제 1417 도 참조하세요 . 더 이상 선택하는 이유가 아니라고이 수단 @ManagedBean이상 @Named. 이것은 Mojarra 2.3.0 베타 버전 m06에서 처음 구현되었습니다.

역사
핵심적인 차이점은 @ManagedBeanJSF 프레임 워크에 의해 관리되며 @ManagedProperty다른 JSF 관리 Bean을 통해서만 사용할 수 있다는 것입니다. @NamedCDI 프레임 워크를 통해 애플리케이션 서버 (용기)에 의해 관리된다 경유 @Inject같은 컨테이너 관리 아티펙트의 종류를 사용할 수 @WebListener, @WebFilter, @WebServlet, @Path, @Stateless, 등 심지어 JSF @ManagedBean. 다른 쪽에서는 내부 또는 다른 컨테이너 관리 아티팩트 내부에서 작동 @ManagedProperty하지 않습니다@Named . 그것은 실제로 내부에서만 작동합니다 @ManagedBean.
또 다른 차이점은 CDI가 실제로 요청 / 스레드 단위로 대상 범위의 현재 인스턴스에 위임하는 프록시를 주입한다는 것입니다 (예 : EJB가 주입되는 방식). 이 메커니즘은 JSF로는 불가능한 더 넓은 범위의 빈에 더 좁은 범위의 빈을 주입 할 수있게합니다 @ManagedProperty. JSF는 setter를 호출하여 여기에 물리적 인스턴스를 직접 "주입"합니다 (이것이 바로 setter가 필요한 이유이지만 에서는 필요 하지 않음@Inject ).
직접적인 단점은 아니지만-다른 방법이 있습니다-범위 @ManagedBean는 단순히 제한됩니다. 다른 관점에서 보면에 대해 "너무 많이"노출하지 않으려면 @Inject관리되는 Bean을 그대로 유지할 수도 있습니다 @ManagedBean. 그것은처럼 protected대 public. 그러나 그것은 실제로 중요하지 않습니다.
적어도 JSF 2.0 / 2.1에서 CDI로 JSF 백킹 빈을 관리 할 때의 주요 단점은 @ViewScoped. 은 @ConversationScoped가깝게 있지만, 수동으로 시작 및 중지 요구하고 못생긴 추가 cid결과 URL에 대한 요청 매개 변수를. MyFaces CODI는 JSF javax.faces.bean.ViewScoped를 CDI 에 완전히 투명하게 브리징하여 더 쉽게 만들 수 있습니다 @Named @ViewScoped.하지만 이렇게하면 windowId결과 URL에 추악한 요청 매개 변수 가 추가 되며 일반 페이지 간 탐색에서도 마찬가지입니다. OmniFaces 는 @ViewScoped빈의 범위를 임의의 요청 매개 변수 대신 JSF보기 상태에 실제로 연결 하는 진정한 CDI로이 모든 것을 해결합니다 .
(3 년이 질문 / 대답 한 후 해제) JSF 2.2은 새로운 완전히 CDI 호환 제공 @ViewScoped의 맛에 상자 밖으로 주석을 javax.faces.view.ViewScoped. JSF 2.2 @FlowScoped에는 @ManagedBean동등한 기능 이없는 CDI 전용도 함께 제공되어 JSF 사용자를 CDI로 이동시킵니다. 예상 @ManagedBean대로 및 친구들은 Java EE 8에 따라 더 이상 사용되지 않을 것입니다. 현재 여전히을 사용중인 경우 @ManagedBean향후 업그레이드 경로에 대비하기 위해 CDI로 전환하는 것이 좋습니다. CDI는 WildFly, TomEE 및 GlassFish와 같은 Java EE 웹 프로필 호환 컨테이너에서 쉽게 사용할 수 있습니다. Tomcat의 경우 JSF에 대해 이미했던 것과 똑같이 별도로 설치해야합니다. Tomcat에 CDI를 설치하는 방법 도 참조하십시오 .