2014-06-20 46 views
0

我有maven struts2 spring hibernate集成項目。我導入到eclipse並正確運行。但是,當我通過向該項目添加預定義的依賴關係來逐步重新配置該項目時。它無法從應用程序上下文文件中獲取Spring bean對象。 所以它拋出空指針異常。那麼如何配置獲取彈簧對象。如何配置應用上下文來獲取struts2中的spring bean

+0

顯示我們項目結構你如何定義的。 –

+0

添加更多詳情。 –

回答

0

注意:不要foget在web.xml

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

替代1添加監聽器:使用Spring的WebApplicationContext在你的行動中執行方法

import org.springframework.web.context.WebApplicationContext; 
import org.springframework.web.context.support.WebApplicationContextUtils; 

Public class yourAction extends ActionSupport{ 
    public String execute() throws Exception { 
     WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()); 
     UserBo userBo1 = (UserBo)context.getBean("userBo"); 
    } 
} 

方案2:您可以在applicationContext.xml

中指定DI
<bean id="userBo" class="yourPackageName.UserBoImpl" /> 

<bean id="userSpringAction" class="yourPackageName.UserSpringAction"> 
    <property name="userBo" ref="userBo" /> 
</bean> 
struts.xml

//struts.xml 
<action name="userSpringAction" class="userSpringAction" > 
    <result name="success">pages/user.jsp</result> 
</action> 

在你的行動

public class yourAction extends ActionSupport{ 
    //DI via Spring 
    UserBo userBo; 
} 

方案3:您可以使用Struts天真依賴注入

第1步:在你struts.xml

<struts> 
    <bean class="yourPackageName.UserBoImpl" name="userBo" /> 
    <package name="mydefault" namespace="/" extends="struts-default"> 
    .... 
    </package> 
</struts> 

第2步:在你的行動

Public class yourAction extends ActionSupport{ 

    // struts DI 
    @Inject("userBo") 
    private UserBO userBO; 

} 
相關問題