2017-05-25 59 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

相關問題