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