JavaのWebアプリケーション開発フレームワークによる、Webサイト開発の顛末記です。

EclipseのMavenを使った、Spring-MVC、Thymeleaf、MyBatis 等のプログラミングテクニックを、
備忘録的に記録しています。実際に動くソースコードを多用して説明していますので、
これからEclipseや、Spring-MVCを始めたいと思っている人にとって、少しでも参考になれば幸いです。
Spring-MVCの散歩道 > 応用の森(Spring-MVC編) > 複数のDB(データソース)に接続する

package jp.dip.arimodoki.blogic;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

import jp.dip.arimodoki.common.CConst;
import jp.dip.arimodoki.common.JsonConvertIf;
import jp.dip.arimodoki.mapper.primary.GraphMapper;
import jp.dip.arimodoki.model.FormChartIf;
import jp.dip.arimodoki.model.data.ChartDoughnutData;

/**
* ドーナツグラフ描画情報を処理するビジネスロジッククラスです。
*/
@Scope("prototype")         //singleton回避
@Service("BlChartImpl")     //名前付きアノテーション
public class BlChartImpl implements CConst, BlChartIf {

    //JSON パーサー/ジェネレータインスタンスを生成
    @Autowired
    private JsonConvertIf jsonConvert;

    //Chart情報フォームビーン(コントローラから継承される)
    private FormChartIf             formChart;

    //SQLマッパーをDI
    @Autowired
    private GraphMapper           mapperGraph;

    /**
     * フォームBeanの継承
     * コントローラで取得したFormBeanを継承する
     * @param form Chart情報フォームビーン
     */
    public void setForm(FormChartIf form) {
        this.formChart = form;
    }

    /**
     * ドーナツグラフ情報を生成する
     * ドーナツグラフ描画用JSONフォーマットに合わせた
     * 階層構造のオブジェクトを作成する
     * {"labels":["",..],"datasets":[{"data":["",..],"backgroundColor":["",..],"hoverBackgroundColor":["",..]]}]}
    */
    @Transactional(readOnly=true, value="primaryTransactionManager")
    public void getCharDoughnutData() throws Exception {
        //リクエストパラメータ(グラフ分類値)を取得
        int category = this.formChart.getJsonReqParam().getCategory();
        logger.log_info(this, "category["+category+"]");

        //SQLマッパーでDBを検索する
        String gdata = mapperGraph.getGraph(Integer.toString(category));

        //ドーナツグラフ情報インスタンス生成
        ChartDoughnutData chartDoughnutData = new ChartDoughnutData();
        /**
        Mapperから返却された gdata をそのままviewに返しても良いが
        Bean構造をあまり変えたくないので、一旦デシリアライズする
         */
        //gdata(JSON)をJavaObjectにデシリアライズ
        chartDoughnutData = (ChartDoughnutData)jsonConvert.Deserialize(gdata, chartDoughnutData);

        //返却用FormBeanにドーナツグラフ情報を保持
        formChart.setChartDoughnutData(chartDoughnutData);

        //(参考)グラフ情報のJSON配列を取得してみる(ロギングのみ)
        String[] glist = mapperGraph.getGraphList();
        logger.log_info(this, "glist size["+glist.length+"]");
        for(int i=0 ; i < glist.length ; i++) {
            logger.log_info(this, "glist data["+glist[i]+"]");
        }
        //(参考)グラフ情報のJSON配列を取得してみる(ロギングのみ)


    }

}