1.インタフェース
パブリック インターフェイスDataDictionaryService { / ** *為替レートを取得します * @Param coinType元の通貨 * @Param billCoin割引通貨 * @Param 離れた最寄りの為替レートからDATEテイク時間 * @return * / 公共のBigDecimal getExch(文字列coinType、文字列billCoin、日付)。 }
示すように、2つの実装クラスがあります。
2、実装クラス
@Service( "dataDictionaryService" ) パブリック クラス DataDictionaryCache 実装DataDictionaryService { @Autowired プライベートDataDictionaryServiceImpl dataDictionaryService。 プライベート地図<ExchConditions、エクスチェンジクラブ> exchMap = 新しいのConcurrentHashMap <> (); @Autowired 民間のCacheManagerのCacheManager。 // プライベート地図<PrpDcurrency、prpDcurrency> prpDcurrencyMap =新しいのConcurrentHashMap <>(); @オーバーライド 公共のBigDecimal getExch(文字列coinType、文字列billCoin、日付){ ExchConditionsのexchConditions = 新しいExchConditions(coinType、billCoin、日付)。 もし(!exchMap.containsKey(exchConditions) || exchMap.get(exchConditions).isTimeout()){ BigDecimalのEXCH = dataDictionaryService.getExch(coinType、billCoin、日付)。 exchMap.put(exchConditions、新しいエクスチェンジクラブ(EXCH)); } 返すexchMap.get(exchConditions).getExchrateを(); }
}
@Component
パブリッククラスDataDictionaryServiceImpl実装DataDictionaryService {
@Autowired
プライベートDictAPIService dictService;
@Autowired
プライベートRelationBreakMapper relationBreakMapper;
@Autowired
プライベートOutstandingBreakMapper outstandingBreakMapper;
@Autowired
プライベートAssessBreakMapper assessBreakMapper;
/ **
*空だった取得
* @param coinType元の通貨
* @param billCoinオフ通貨
最新の為替レートから取ら* @param日時
* @return
* /
@Override
公共getExchのBigDecimal(coinType文字列、文字列billCoin、日付DATE){
PrpDexch EXCH = NULL;
トライ{
EXCH = dictService.getPrpDexch( "DMS"、日付、coinType、billCoin)。
}キャッチ(例外e){
BigDecimal.ZEROを返します。
}
戻りEXCH == nullの?。BigDecimal.ZERO:exch.getExchRate()分割(新規のBigDecimal(exch.getBase()))。
}
3、コール
@コントローラ @RequestMapping(値 = "/ dataDict" ) パブリック クラスDataDictController { @Autowired プライベート DataDictionaryService dataDictionaryService。
説明:インターフェースは2つの実装クラス、実装クラスの後のコメントで@Service(「dataDictionaryService」)説明引用符を追加する必要があるときにコントローラが呼び出したときに、属性名は引用符で名前と一致する必要があります、または豆は、実装クラスが作成された識別できませんでした。
実際には、次のように与えられたがコンパイルされます。
それは自動的に装着することができません。豆の「DataDictionaryService」複数のタイプ。
豆:
dataDictionaryCache(dataDictionaryCacheた.java)
dataDictionaryServiceImpl(dataDictionaryServiceImplた.java)