注入する正しい春豆を選択するのに問題があります。前のクラスへの呼び出しに応じて、どの Bean を注入するかをスプリング コンテナーに伝える方法が必要です。Spring Bean の配線はすべて xml で行います。
私の質問:これは可能ですか?それが実装に関する参照である場合は?
私が達成しようとしていることを説明するために、いくつかのサンプル コードを作成しました。実行時に選択した reportType に応じて正しい ReportHeader Bean が注入されるように、自由に変更してください。
public enum ReportType{
Credit,
Annul
}
public class ReportService {
private ReportHeaderService reportHeaderService;
private ReportType reportType;
public ReportService (){}
public setReportType(ReportType reportType){
this.reportType = reportType;
}
public void setReportHeaderService(ReportHeaderService reportHeaderService){
this.reportHeaderService = reportHeaderService;
}
private void generateHeader(){
//i would like to call my service like this and have the correct bean injected to ReportHeader.
reportHeaderService.generateHeader(reportType)
}
}
public class ReportHeaderService {
private ReportHeader reportHeader;
//this will call the injected bean that needs to be selected accoring to the ReportType
public void generateHeader(ReportType type){
reportHeader.createHeader();
}
}
public interface ReportHeader{
public void createHeader();
}
public class CreditReportHeader implements ReportHeader{
public void createHeader(){
..dostuff();
}
}
public class AnnulReportHeader implements ReportHeader{
public void createHeader(){
..dostuff();
}
}