java bean工厂_java-将Service用作“工厂”以返回不同的Bean...
我想在我的Spring應用程序中使用這種類型的服務類作為“工廠”,以響應提供的枚舉值返回DocumentProcessor的正確實現.
我這樣做是因為我想將每個處理器本身設置為一個組件,并利用自動裝配的優勢,而不是僅在需要每個處理器時創建新實例.
我還沒有真正在其他地方看到它-有人可以告訴我這是否是個壞主意嗎?
所有“ TypeXYZDocumentProcessor”類都是抽象“ DocumentProcessor”基類的擴展.
@Service
public class DocumentProcessorService {
@Autowired
TypeXDocumentProcessor typeXDocumentProcessor;
@Autowired
TypeYDocumentProcessor typeYDocumentProcessor;
@Autowired
TypeZDocumentProcessor typeZDocumentProcessor;
public DocumentProcessor getDocumentProcessor(DocumentType docType) {
switch (docType) {
case TYPE_X:
return typeXDocumentProcessor;
case TYPE_Y:
return typeYDocumentProcessor;
case TYPE_Z:
return typeZDocumentProcessor;
default:
return null;
}
}
}
@Component
public class TypeXDocumentProcessor extends DocumentProcessor {
...
}
public abstract class DocumentProcessor {
...
}
最佳答案
這是我的命題,我使用了Interface而不是抽象類,但是如果您確實需要抽象類,則可以在其上返回.
@Service
public class DocumentProcessorService {
@Autowired
// you can add here for examlpe a @Qualifier("typeXDocumentProcessor"),
// then name your variable whatever you want.
DocumentProcessor typeXDocumentProcessor;
@Autowired
DocumentProcessor typeYDocumentProcessor;
@Autowired
DocumentProcessor typeZDocumentProcessor;
public DocumentProcessor getDocumentProcessor(DocumentType docType) {
switch (docType) {
case TYPE_X:
return typeXDocumentProcessor;
case TYPE_Y:
return typeYDocumentProcessor;
case TYPE_Z:
return typeZDocumentProcessor;
default:
return null;
}
}
}
@Component
public class TypeXDocumentProcessor implements DocumentProcessor {
...
}
@Component
public class TypeYDocumentProcessor implements DocumentProcessor {
...
}
@Component
public class TypeZDocumentProcessor implements DocumentProcessor {
...
}
public interface class DocumentProcessor {
...
}
總結
以上是生活随笔為你收集整理的java bean工厂_java-将Service用作“工厂”以返回不同的Bean...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sublime text java 开发
- 下一篇: java pdf 水印_Java 在PD