Spring Boot Application如何在内部工作?

时间:2017-05-25 04:27:18

标签: 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,那么如何配置呢?

2 个答案:

答案 0 :(得分:29)

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

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

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

您可以在其中一个配置文件中将弹簧引导中的交叉过滤器添加为

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

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

答案 1 :(得分:5)

  1. 我知道spring boot有一个main(),它调用static run() 存在于SpringApplication中。但我想知道流量是什么 Spring启动应用程序?
  2. Spring引用适用于AutoConfiguration的许多通用DataSourceAutoConfiguration,例如DataSource等。因此,您不必执行大量配置,只关注业务逻辑。请阅读this了解更多

    1. 我们可以运行除tomcat服务器之外的spring boot应用程序,如果是的话怎么样?
    2. 是的,您可以将Spring启动应用程序作为控制台应用程序启动,也可以与Jetty等其他Web服务器启动。请阅读this了解更多

      1. 如何在Spring启动应用程序中添加CROSS Filter?正如我们在Spring MVC应用程序中所知,我们在web.xml中配置了CROSS Filter,但是Spring启动我们没有web.xml,那么如何配置呢?
      2. 您只需在您的课程中使用main方法或任何其他具有FilterRegistrationBean的课程添加@Configuration即可注册自定义Filter

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