Je souhaite que le moteur de gabarit soit disponible dans les servlets. L'implémentation concrète du moteur de gabarit doit être modifiable derrière l'interface TemplateEngine. Avec l'injection de dépendance habituelle, il pourrait ressembler à ceci:Dépend de l'injection dans le champ statique
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);
}
}
L'inconvénient de cette approche est que chaque Servlet qui veut utiliser la méthode render doit étendre BaseServlet. Par conséquent, j'aimerais avoir une méthode de rendu importée statiquement.
public class TemplateEngineWrapper {
@Inject
static TemplateEngine templateEngine;
public static void render(Result result, HttpServletResponse response) {
templateEngine.render(result, resonse);
}
}
Dans le Servlet je l'utiliser de cette façon:
import static TemplateEngineWrapper.render;
...
public void doGet(...) {
render(new Result(200, "Everything is fine."), response);
}
...
un problème avec cette approche? Si oui: que suggérez-vous plutôt?