在JSF / Spring应用程序中的servlet中访问Business Object?

时间:2014-09-09 10:51:57

标签: spring servlets jsf-2

通常,我在使用@ManagedBean注释的主类中使用@ManagedProperty访问业务对象(服务)。

在这里,我有一个Servlet,我想注入我的业务对象。 使用managedProperty不能使用注释@WebServlet。

当我使用WebApplicationContext时,它正在工作。

使用WebApplicationContext是干净的方法还是有更简洁的方法呢?

@WebServlet(urlPatterns ="/Graphic")
public class GraphicServlet extends HttpServlet {

    // Method 1 - This is not working ( the usual way in a ManagedBean)
    @ManagedProperty(value="#{participantBo}")
    private ParticipantBo participantBo; // getters and setters added

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // Method 2 - This is working
        WebApplicationContext springContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
        ParticipantBo participantBo = (ParticipantBo) springContext.getBean("participantBo");

        List<Participant> myParticipants = participantBo.findAllParticipant();

        for (Participant participant : myParticipants) {
            System.out.println(participant.getId_study());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使用WebApplicationContext是从您想要的位置访问Spring Web上下文的方法之一。实际上,如果您能够使用@ManagedProperty访问Spring bean,则意味着您已经以某种方式绑定了JSF和Spring框架。 @ManagedProperty应仅适用于JSF托管bean。但是,作为您的servlet完全独立于框架,以这种方式访问​​Spring上下文是一种选择。

另见: