Я хочу сделать движок шаблонов доступным в сервлетах. Конкретная реализация механизма шаблонов должна быть изменяемой за интерфейсом TemplateEngine. При обычном внедрении зависимости это может выглядеть так:
public abstract class BaseServlet extends HttpServlet {
private TemplateEngine templateEngine;
public void setTemplateEngine(TemplateEngine te) {
templateEngine = te;
}
protected void render(Result result, HttpServletResponse response) {
templateEngine.render(result, resonse);
}
}
Недостатком этого подхода является то, что каждый сервлет, который хочет использовать метод рендеринга, должен расширять BaseServlet. Поэтому я хотел бы иметь статически импортированный метод рендеринга.
public class TemplateEngineWrapper {
@Inject
static TemplateEngine templateEngine;
public static void render(Result result, HttpServletResponse response) {
templateEngine.render(result, resonse);
}
}
В сервлете я бы использовал его так:
import static TemplateEngineWrapper.render;
...
public void doGet(...) {
render(new Result(200, "Everything is fine."), response);
}
...
Что-то не так с этим подходом? Если так: что бы вы предложили вместо этого?