Ставшие очень комфортно с инъекцией зависимостей, как стиль, я обнаружил, что написание HTTP-сервлет что-то вроде этого:инъекционные зависимостей в простой старый HTTP Tomcat сервлет
public class FooServlet extends HttpServlet {
private Dependency dependency;
public void setDependency(Dependency dependency) {
this.dependency = dependency;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
...
Result r = dependency.doSomething(...);
...
}
Это красиво легко модульного тестирования , и я очень хочу сохранить модель, но теперь, когда я прихожу к ее развертыванию в Tomcat, я пришел к пониманию, что не знаю, где я могу вызвать setDependency().
Некоторые неопределенные возможности, которые приходят на ум:
- параметры Get сервлетов в Init(). Это просто String, поэтому мне нужно будет сделать Reflection для создания. Это было бы неверно. просто настроенное создание зависимостей.
- Что-то с JNDI
- Как-то из Java-программы, в которую встроен Tomcat, получите Tomcat, чтобы дать мне ссылку на объект Servlet, позвольте мне вызвать его сеттер.
- Используйте весну. Если я использую Spring, я буду искать способы уменьшить его. Это приложение недостаточно сложно, чтобы гарантировать Spring MVC.
Спасибо. Вопрос о безопасности потоков ничем не отличается от того, что вы должны учитывать в сети весенних бобах, верно? – slim
Ты абсолютно прав. –