Моя главная цель - установить Redhat's Undertow , встроенный в мое приложение без web.xml
и без Spring Boot.Undertow выглядит так, как будто он достаточно близок к контейнеру сервлета, чтобы удовлетворить мои требования, и в то же время суперэффективен и компактен.Что касается других микрофреймов, я также посмотрел на SparkJava , но сначала пробовал Undertow, потому что его документы выглядят лучше.
Так что Undertow звучит великолепно, но все документы и учебники, с которыми я сталкиваюсь, останавливаютсяпосле возврата " Hello World " на /
.Возможно, лучшее, что я смог найти, это StubbornJava / RestServer.java , где все конечные точки жестко запрограммированы, например:
public static final RoutingHandler ROUTES = new RoutingHandler()
.get("/users", timed("listUsers", UserRoutes::listUsers))
Что я не могу найти, так это то, что показывает, как или еслидаже возможно связать аннотации контроллера Spring MVC / REST с базовой структурой Undertow.
У меня уже есть приложение с набором конечных точек, определенных в аннотациях Spring.
В моих знаниях о Spring и Undertow отсутствует большая часть о том, как объединить эти два, но из Baeldung / Configuring Spring Boot я вижу, что Spring предоставляет способ использования Undertowв Boot.Мне просто не нужен Spring Boot.И я действительно не в восторге от того, чтобы копать в источник Spring , чтобы посмотреть, как это сделал Pivotal, поскольку в моей ситуации он, вероятно, не будет воспроизводим.Вот способ реализовать это в Boot:
@Bean
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
UndertowEmbeddedServletContainerFactory factory =
new UndertowEmbeddedServletContainerFactory();
factory.addBuilderCustomizers(new UndertowBuilderCustomizer() {
@Override
public void customize(io.undertow.Undertow.Builder builder) {
builder.addHttpListener(8080, "0.0.0.0");
}
});
return factory;
}
Я предполагаю, что мне придется программно получить аннотированные контроллеры Spring REST и создать необходимые ресурсы Undertow для каждого.
Похоже, что список рассылки Undertow тоже не поддается поиску.