Spring Boot Application如何在内部工作?

San*_*adi 22 java spring spring-boot

我正在开发Spring Boot.我有一些疑问

  1. 我知道spring boot有一个main(),它调用SpringApplication中的static run().但我想知道Spring启动应用程序的流程是什么?
  2. 我们可以在tomcat以外的服务器上运行spring boot应用程序,如果是的话怎么样?
  3. 如何在Spring启动应用程序中添加CROSS Filter?正如我们在Spring MVC应用程序中所知,我们在web.xml中配置了CROSS Filter,但是Spring启动时我们没有web.xml,那么如何配置呢?

Vij*_*mar 30

以下是弹簧靴如何工作的高级流程.

从run方法开始,主应用程序上下文启动,然后搜索使用@Configuration注释的类,初始化这些配置类中的所有声明的bean,并根据这些bean的范围,将这些bean存储在jvm中,具体而言在JVM内部的空间中,称为IOC容器.创建所有bean之后,自动配置调度程序servlet并注册默认处理程序映射,messageConverts和所有其他基本内容.

基本上spring boot支持三个嵌入式服务器: - Tomcat(默认),Jetty和Undertow.

您可以在其中一个配置文件中的spring boot中添加交叉过滤器

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**");
    }
}
Run Code Online (Sandbox Code Playgroud)


sha*_*zin 5

  1. 我知道spring boot有一个main(),它调用SpringApplication中的static run().但我想知道Spring启动应用程序的流程是什么?

春天启动了很多普通的工作AutoConfiguration,例如DataSourceAutoConfigurationDataSource等,所以,你不必做太多的配置,并且只专注于业务逻辑.阅读本文了解更多

  1. 我们可以运行除tomcat服务器之外的spring boot应用程序,如果是的话怎么样?

是的,您可以将Spring启动应用程序作为控制台应用程序启动,也可以与Jetty等其他Web服务器启动.阅读本文了解更多

  1. 如何在Spring启动应用程序中添加CROSS Filter?正如我们在Spring MVC应用程序中所知,我们在web.xml中配置了CROSS Filter,但是Spring启动时我们没有web.xml,那么如何配置呢?

您只需FilterRegistrationBean在类中添加一个main方法或任何其他类@Configuration来注册自定义Filter.

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