通常,我在使用@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());
}
}
}
答案 0 :(得分:0)
使用WebApplicationContext
是从您想要的位置访问Spring Web上下文的方法之一。实际上,如果您能够使用@ManagedProperty
访问Spring bean,则意味着您已经以某种方式绑定了JSF和Spring框架。 @ManagedProperty
应仅适用于JSF托管bean。但是,作为您的servlet完全独立于框架,以这种方式访问Spring上下文是一种选择。
另见: