私は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);
}
}
EDIT 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" />
EDIT 3. 私は Sotiros の答えを受け入れました。ご協力いただきありがとうございます。本当に感謝しています。
編集 4. jsp cewolf タグ lib から Spring を使用する方法にまだ苦労しています。それを行う方法はありますか?
EDIT 5.私はついにそれを機能させました。Sotiros の回答に従いました。「... @Controller の @Inject ポイントを使用して、モデルに追加します。」