我对 Spring 很陌生,这让我很困惑。我尝试注入我的 DAO 实现,它在控制器类中工作,但在另一个类中,当使用完全相同的代码时,我得到 NullPointerException。
@Inject
private ResultCsvDAO res;
.
.
List<ResultRow> list = res.readResultToObjects();
最后一行给出了 NullPointerExceprion。我已经在 Spring 配置文件中使用了所有包。
<context:component-scan base-package="ptra.freecharts, ptra.controller, ptra.dao" />
<context:annotation-config />
任何想法我错过了什么或做错了什么?
编辑。这是全班
package ptra.freecharts;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import ptra.dao.ResultCsvDAO;
import ptra.model.ResultRow;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;
@Service
public class DataProviderXY implements DatasetProducer, Serializable {
private static final long serialVersionUID = 4755020363939818521L;
private final Logger logger = LoggerFactory.getLogger(DataProviderXY.class);
@Inject
private ResultCsvDAO res;
public String getProducerId() {
return "ptra.freecharts.XY";
}
public boolean hasExpired(
Map arg0, Date arg1) {
return false;
}
public Object produceDataset(Map arg0) throws DatasetProduceException {
XYSeries dataset = new XYSeries("XY Dataset");
List<ResultRow> list = res.readResultToObjects();
for (int i=0; i<list.size(); i++) {
dataset.add(i, list.get(i).getElapsed());
}
return new XYSeriesCollection(dataset);
}
}
编辑 2. DataProviderXY 在 jsp 中被调用:
<jsp:useBean id="dataXY" class="ptra.freecharts.DataProviderXY" />
<cewolf:chart id="XYChart" title="Transaction response times" type="xy">
<cewolf:gradientpaint>
<cewolf:point x="0" y="0" color="#FFFFFF" />
<cewolf:point x="300" y="0" color="#DDDDFF" />
</cewolf:gradientpaint>
<cewolf:data>
<cewolf:producer id="dataXY" />
</cewolf:data>
</cewolf:chart>
<cewolf:img chartid="XYChart" renderer="cewolf" width="640"
height="500" />
编辑 3. 我接受了 Sotiros 的回答,即使有些人也是对的。感谢您的所有帮助,我真的很感激!
编辑 4. 我仍在努力如何从 jsp cewolf 标签库中使用 Spring。任何指针如何做到这一点?
编辑 5. 我终于让它工作了。我按照 Sotiros 的回答“......通过 @Controller 中的 @Inject 点并将其添加到模型中。”