我有一个巨大的项目,其中某些部分是Struts1的一些Spring。
我在春天有一个Dao课:
@Component
public class CouchDao {
@Autowired(required = false)
ICouchbaseTemplateInterface iCouchbaseTemplateInterface;
public List<Couch> getUnExpiredForClient(int client) {
Query query = new Query();
CouchList=iCouchbaseTemplateInterface.findAllOrderBypostionAcrossVerticalDesc(query);
List<Couch> CouchList=new ArrayList<Couch>();
try {
CouchList = iCouchbaseTemplateInterface.findAllOrderBypostionAcrossVerticalDesc(query);//CouchBase Query
}
这适用于Spring Class。但是当我用Struts调用它时如下:
CouchDao.getUnExpiredForClient(0);
getUnExpiredForClient()中的Try部分使用Null指针异常。
我的action-servlet.xml如下所示:
<bean name="/**" class="**.APIAction">
<property name="CouchDao" ref="CouchDao" />
</bean>
请帮助。
答案 0 :(得分:0)
这里的问题是,使用struts你会“失去”Spring上下文。 Autowired annotation为spring上下文初始化bean ICouchbaseTemplateInterface,但不为struts初始化。
例如,由于您已在struts action xml文件中声明了Bean CouchDao,因此struts框架可用于注入Bean CouchDao,但它无法识别Autowired注释,因此ICouchbaseTemplateInterface未初始化并抛出NullPointerException。尝试在xml中注入该bean。
抱歉我的英文不好:)