我有一个有很多现有代码的 Servlet。我正在尝试将依赖注入添加到其中的一部分。目前我正在手动进行:
public class AdjustBookPriceHandler extends BookRequestHandler {
@Override
public void handleRequest(RequestState requestState, RequestData requestData, Object obj) {
Book book = (Book) obj;
long newPrice = Long.parseLong(requestData.getQueryParam("price");
OfferRepository offerRepository = ((BookData) requestState.getData()).getOfferRepository();
BookPriceAdjuster priceAdjuster = getBookPriceAdjuster();
priceAdjuster.adjustPrice(newPrice);
}
protected BookPriceAdjuster getBookPriceAdjuster(RequestState requestState, RequestData requestData, Book book) {
return new BookPriceAdjuster(book, offerRepository);
}
}
这里 book 和 offer 存储库依赖项通过构造函数注入到 BookPriceAdjuster 中。getBookPriceAdjuster 方法允许从 AdjustBookPriceHandler 继承的类提供不同的价格调整器。
我想开始使用像 Guice 这样的 DI 框架来减少复杂示例会引入的一些样板代码。但是,我不确定在这种情况下使用它的最佳方式。
我如何编写能够从“上帝”对象 RequestState 和 RequestData 中提取相关依赖项的绑定?或者此时使用框架会同样复杂和混乱?