Как приложение Spring Boot работает внутри?

Я работаю над Spring Boot. У меня есть некоторые сомнения

  1. Как я знаю, у весенней загрузки есть main(), и он вызывает static run(), который присутствует в SpringApplication. Но я хочу знать, как протекает загрузочное приложение Spring?
  2. Можем ли мы запустить приложение весенней загрузки на сервере, отличном от tomcat, если да, то как?
  3. Как добавить CROSS Filter в загрузочное приложение Spring? Как мы знаем в приложении Spring MVC, мы настраиваем CROSS Filter в web.xml, но в Spring загрузке у нас нет web.xml, так как это настроить?

Ответ 1

Ниже описан порядок работы пружинного башмака.

Из метода run запускается основной контекст приложения, который, в свою очередь, ищет классы, аннотированные @Configuration, инициализирует все объявленные bean-компоненты в этих классах конфигурации и, основываясь на области действия этих bean-компонентов, сохраняет эти bean-компоненты в JVM, особенно в пространстве внутри JVM, которое известно как контейнер IOC. После создания всех bean-компонентов автоматически настраивается сервлет диспетчера и регистрируются сопоставления обработчиков по умолчанию, messageConverts и все другие основные вещи.

В основном Spring Boot поддерживает три встроенных сервера: - Tomcat (по умолчанию), Jetty и Undertow.

Вы можете добавить перекрестные фильтры при весенней загрузке в один из файлов конфигурации как

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**");
    }
}

Ответ 2

  1. Как я знаю, весенняя загрузка имеет main() и вызывает static run(), котораяприсутствует в SpringApplication. Но я хочу знать, что такое поток Spring загрузочного приложения?

Spring boot работает с большим количеством универсальных AutoConfiguration, например DataSourceAutoConfiguration для DataSource и т.д. Чтобы вам не пришлось выполнять большую часть конфигураций и сосредоточиться только на бизнес-логике. Прочитайте это, чтобы узнать больше

  1. Можем ли мы запустить приложение весенней загрузки, отличное от сервера Tomcat, если да, то как?

Да, вы можете запустить загрузочное приложение Spring как консольное приложение или с другими веб-серверами, такими как Jetty. Прочитайте это, чтобы узнать больше

  1. Как добавить CROSS Filter в загрузочное приложение Spring? Как мы знаем в приложении Spring MVC, мы настраиваем CROSS Filter в web.xml, но в Spring загрузке у нас нет web.xml, так как это настроить?

Вам просто нужно добавить FilterRegistrationBean в свой класс с помощью метода main или любого другого класса с помощью @Configuration, чтобы зарегистрировать пользовательский Filter.

    @Bean
    public FilterRegistrationBean crossFilter() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new CrossFilter());
        registration.addUrlPatterns("/*");
        return registration;
    }