Весь код автоматической настройки для всех, который поддерживает Spring Boot, находится в spring-boot-autoconfigure. Если вы просмотрите пакеты, вы увидите пакет из трикотажа.
«Стартовые» модули обычно не имеют никакого кода (конечно, если это не сторонний модуль). Как это работает, так это то, что код в автоконфигурации имеет некоторые аннотации, которые являются @ConditionalOnXxx, где условие может быть любым из класса, находящегося в пути к классам. Если этот класс недоступен, то автоконфигурация не произойдет. Это почти все, что делает добавление стартового модуля трикотажа: он добавляет трикотажные зависимости, чтобы применялся автоконфигуратор.
Что именно автоматически настраивается специально для Джерси? Ознакомьтесь с исходным кодом JerseyAutoConfiguration. По сути, вы увидите, что ваш ResourceConfig внедряется в конфигуратор. Из этого ResourceConfig создается ServletContainer Джерси (который является основной точкой входа для Джерси.
Затем, в зависимости от нашей конфигурации свойств, либо FilterRegistrationBean, либо ServletRegistrationBean создается как bean-компонент Spring, обертывающий ServletContainer Джерси. Джерси может быть создан как сервлет или фильтр сервлета. Какой бы из них мы ни настроили, мы будем использоваться.
И это все для конфигурации Джерси. Spring Boot получит контейнер сервлета (например, Tomcat, Jetty) из какой-либо другой автоматической конфигурации, возьмет Filter/ServletRegistrationBean и добавит Servlet/Filter в этот контейнер сервлета.
Кроме того, это не так важно, но автоматическая настройка также дает нам несколько помощников по настройке Джексона. Например, вместо настройки нашего собственного ContextResolver мы можем просто настроить bean-компонент ObjectMapper Spring.
Это действительно все, что вы получаете. В этом нет ничего такого впечатляющего, что вы не могли бы просто сделать это самостоятельно, не завися от автоматической настройки.
person
Paul Samsotha
schedule
09.06.2017