2017-05-25 97 views
5

我正在使用Spring Boot。我有一些疑问Spring Boot Application如何在内部工作?

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

回答

6

以下是弹簧引导工作原理的高级流程。

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

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

您可以在配置文件中的一个春季启动加十字滤镜作为

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

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

春季引导流程的好解释。谢谢 如果我想运行使用jboss服务器的spring启动应用程序,那么如何配置呢? –

+0

您可以配置jboss服务器,就像其他服务器一样,我可以在IDE中的服务器视图中对其进行配置,但这里唯一的问题是您无法将jboss配置为使用spring启动的嵌入式服务器。 –

+0

在jboss中运行spring引导应用程序,我需要在jboss服务器中部署war文件,对吧? –

3
  1. 据我所知春天启动了一个main(),它调用静态的run(),它 存在于SpringApplication。但我想知道Spring启动应用程序的流程 是什么?

春天启动了大量的通用AutoConfiguration,例如DataSourceAutoConfigurationDataSource等工作,这样你就不必做太多的配置,并且只专注于业务逻辑。请阅读this了解更多

  1. 我们可以运行tomcat服务器以外的spring引导应用程序吗?如果是的话?

是的,您可以启动Spring应用程序作为控制台应用程序或其他Web服务器(如Jetty)。阅读this了解更多

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

你只需要在你的类中添加一个FilterRegistrationBean与主要方法或@Configuration任何其他类注册自定义Filter

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

我想使用JBoss服务器上运行春季启动应用程序,所以我怎么可以配置呢? –

+1

您可以将Spring Boot应用程序打包为.war文件并部署到JBOSS服务器中。只要JBOSS Server具有Servlet规范3,它就可以工作。 – shazin

相关问题