Как сгенерировать HttpServletRequest во время запуска Spring для инициализации компонента? - PullRequest
2 голосов
/ 03 февраля 2012

Мне бы хотелось иметь bean-компонент, который проходит через все наши шаблоны FreeMarker и создает экземпляр FreeMarkerView для каждого из них, так что bean-компоненты предварительно загружены. Было несколько других подобных оптимизаций, которые я хотел бы сделать, которые требуют HttpServletRequest.

Итак, мой вопрос заключается в следующем: есть ли в Spring какой-нибудь нормальный способ запустить метод init () для bean-компонента Spring во время запуска приложения и предоставить ему какой-то вид HttpServletRequest? Я хотел бы избежать насмешки над полным HttpServletRequest, и я знаю, что всегда могу настроить контроллер, открыть сокет и отправить ему запрос, но я хотел знать, есть ли лучший или более нормальный способ сделать это.

Конечно, должны быть другие люди, которые хотели настроить HttpServletRequest без выполнения HTTP-запроса, либо при запуске, либо при выполнении запланированной задачи и т. Д .?

1 Ответ

4 голосов
/ 03 февраля 2012

Когда приложение запускается, еще нет запросов к сервлету HTTP.Фактически, Tomcat во время загрузки начинает прослушивать и принимать соединения через порт 8080, но передает их соответствующим сервлетам только после успешного запуска всех приложений.Это означает, что вы не можете позвонить себе во время запуска, поскольку это приведет к тупику - вы ожидаете ответа, который заблокирован Tomcat, который ждет вас.

Это также означает, что это просто невозможно (по крайней мере, когда Tomcatберется как пример) для получения любого запроса сервлета HTTP во время запуска, так как еще нет абсолютно никаких запросов.Да, насмешка - правильный путь, но я боюсь, что если для этих библиотек требуется экземпляр HttpServletRequest, простой имитации может быть недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...