Как приложение Spring Boot работает внутри?
Я работаю над Spring Boot. У меня есть некоторые сомнения
- Как я знаю, у весенней загрузки есть main(), и он вызывает static run(), который присутствует в SpringApplication. Но я хочу знать, как протекает загрузочное приложение Spring?
- Можем ли мы запустить приложение весенней загрузки на сервере, отличном от tomcat, если да, то как?
- Как добавить 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
- Как я знаю, весенняя загрузка имеет main() и вызывает static run(), котораяприсутствует в SpringApplication. Но я хочу знать, что такое поток
Spring загрузочного приложения?
Spring boot работает с большим количеством универсальных AutoConfiguration
, например DataSourceAutoConfiguration
для DataSource
и т.д. Чтобы вам не пришлось выполнять большую часть конфигураций и сосредоточиться только на бизнес-логике. Прочитайте это, чтобы узнать больше
- Можем ли мы запустить приложение весенней загрузки, отличное от сервера Tomcat, если да, то как?
Да, вы можете запустить загрузочное приложение Spring как консольное приложение или с другими веб-серверами, такими как Jetty. Прочитайте это, чтобы узнать больше
- Как добавить 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;
}