如何配置应用程序上下文以获取struts2中的spring bean

时间:2014-06-20 02:53:39

标签: struts2

我有maven struts2 spring hibernate集成项目。我导入了eclipse并正确运行。但是当我通过向该项目添加预定义的依赖项来逐步重新配置该项目时。它无法从应用程序上下文文件中获取spring bean对象。 所以它抛出空指针异常。那么如何配置获取spring对象。

1 个答案:

答案 0 :(得分:0)

注意:不要忘记在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 Naive Dependency Injection

第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;

}