API плагинов TeamCity позволяет добавлять контроллеры, расширяя их BaseController
, который представляет собой тонкую оболочку вокруг Spring * AbstractController
.
Когда я расширяю BaseController
, я могу вставлять бины в конструктор обычным Springманера.Это управляется файлом определения компонентов, таким как стандартная пружина.
Чтобы предоставить контроллер, я должен расширить BaseController
, переопределить public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
и добавить контроллер в определение компонентов.Я регистрирую URL-маршрут как часть инициализации конструктора.
Это касается всех точек расширения, доступных мне для Controller.
Я надеялся, что смогу написать небольшой каркас, который позволил бы мнеаннотируйте мои классы с помощью @RestController
и @RequestMapping
и т. д.
Я думаю, что мне нужно сделать следующее:
- Подключить процессор аннотаций, чтобы найти мои контроллеры и их методы..
- Построить какой-то тип сопоставления, который сопоставляет
@RequestMapping
аннотированные методы с маршрутами - Подключите некоторые обработчики контента, например, сериализацию / десериализацию для JSON и XML
- Отправка входящих запросовк соответствующему методу внутри моего метода handleRequest
Большая часть вышеперечисленного уже написана в Спринге и Джерси, и мне интересно, где я начну это исследовать.
Какие классы предоставляютвыше функциональности?Я попробовал несколько вещей, чтобы попытаться создать экземпляр MVC, но он, кажется, ломается, когда ApplicationContext
недоступен.