Есть ли в приложениях Spring Boot возможность использования обработчиков отдыха (REST API), написанных на Clojure?

У меня есть веб-приложение на основе Clojure, использующее Angular JS. Все REST API написаны на Clojure с использованием Compojure и Ring. Теперь мы хотим разместить наше приложение на экземпляре AWS Fargate, который является приложением Spring Boot.

Я искал способ использовать существующий обработчик отдыха в приложении Spring Boot, но пока не повезло.

Есть ли способ добиться этого или любого другого предложения, которое могло бы помочь нам изменить приложение?


person Manish    schedule 21.04.2021    source источник
comment
вы можете создать контроллер Spring с deftype, который будет вызывать ваш существующий код clojure. типы данных#_java_annotation_support .   -  person leetwinski    schedule 21.04.2021
comment
@leetwinski Извините, я не очень понимаю, как мы можем использовать уже написанные сопоставления URL-адресов в clojure из контроллера Spring, поскольку сам контроллер содержит все сопоставления URL-адресов. Когда на контроллер Spring придет запрос, он будет искать этот конкретный API в самом контроллере, поэтому я не понимаю, как я могу перенаправить все http-запросы на использование обработчика rest, написанного в clojure. Если бы вы могли предоставить небольшой пример с помощью шаблонов, это было бы очень полезно.   -  person Manish    schedule 21.04.2021
comment
Можете ли вы уточнить, подразумеваете ли вы под существующим обработчиком отдыха включение вашего приложения Compojure/Ring в другое загрузочное приложение Spring, которое также имеет свои собственные обработчики? Если это так, в зависимости от логики маршрутизации вы можете воссоздать сопоставления в контроллере Spring и использовать взаимодействие для вызова Clojure из Java, как описано в clojure.org/reference/java_interop#_calling_clojure_from_java   -  person Denis Fuenzalida    schedule 22.04.2021
comment
@DenisFuenzalida Да, под существующим обработчиком отдыха я имею в виду приложение Compojure/Ring. Мы хотим пропустить повторное создание сопоставлений в контроллере Spring, поскольку в этом приложении написано несколько сотен API. Итак, мы ищем способ повторно использовать эти API, не переписывая их в контроллере Spring.   -  person Manish    schedule 22.04.2021
comment
Если все API-интерфейсы в приложении Compojure/ring сопоставлены с несколькими маршрутами (например, начиная с /api), я полагаю, что одним из подходов может быть настройка WebApplicationInitializer (см. baeldung.com/spring-controllers ) и перенаправлять запросы к этим маршрутам на сервлет Clojure или фильтр, который связывается со стороной Compojure. Подробнее см. в этом ответе: stackoverflow.com/a/2818227/483566   -  person Denis Fuenzalida    schedule 23.04.2021