【问题标题】:How Spring Boot Application works internally? [closed]Spring Boot 应用程序如何在内部工作? [关闭]
【发布时间】:2017-05-25 04:27:17
【问题描述】:

我正在开发 Spring Boot。我有点怀疑

  1. 据我所知,spring boot 有一个 main(),它调用 SpringApplication 中存在的静态 run()。但是我想知道 Spring Boot 应用程序的流程是什么?
  2. 我们能否在除 tomcat 之外的服务器上运行 spring boot 应用程序,如果可以,如何?
  3. 如何在 Spring Boot 应用程序中添加 CROSS Filter ?我们知道在 Spring MVC 应用程序中我们在 web.xml 中配置了 CROSS Filter,但是 Spring boot 我们没有 web.xml,那么如何配置呢?

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    以下是 Spring Boot 工作原理的高级流程。

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

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

    您可以在 spring boot 中的配置文件之一中添加 cors 过滤器

    @Configuration
    @EnableWebMvc
    public class WebConfig extends WebMvcConfigurerAdapter {
    
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/api/**");
        }
    }
    

    【讨论】:

    • 很好地解释了 spring boot 流程。谢谢 如果我想使用 jboss 服务器运行 spring boot 应用程序,那么如何配置呢?
    • 您可以像配置任何其他服务器一样配置 jboss 服务器,即从您的 ide 中的服务器视图配置它,这里唯一的事情是您不能将 jboss 配置为带有 spring boot 的嵌入式服务器。
    • 为了在jboss中运行spring boot应用程序,我需要在jboss服务器中部署war文件,对吧?
    • 对。您可以手动部署它,也可以在构建脚本中编写一个任务,该任务会自动将战争复制到您的部署目录。有几种方法,取决于你的需要。
    • 任何参考?我的论文需要它
    【解决方案2】:
    1. 据我所知,spring boot 有一个 main(),它调用 static run() 存在于 SpringApplication 中。但我想知道流程是什么 Spring Boot 应用程序?

    Spring boot 可以使用很多通用的AutoConfiguration,例如DataSourceAutoConfigurationDataSource 等。这样您就不必做很多配置,只需要关注业务逻辑。阅读this了解更多

    1. 除了tomcat服务器之外,我们可以运行spring boot应用吗,如果可以的话怎么办?

    是的,您可以将 Spring Boot 应用程序作为控制台应用程序启动,也可以与 Jetty 等其他 Web 服务器一起启动。阅读this了解更多信息

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

    您只需使用 main 方法在您的类中添加 FilterRegistrationBean 或使用 @Configuration 的任何其他类中添加自定义 Filter

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

    【讨论】:

    • 我想使用 jboss 服务器运行 spring boot 应用程序,我该如何配置呢?
    • 您可以将 Spring Boot 应用程序打包为 .war 文件并部署在 JBOSS 服务器中。只要 JBOSS Server 有 Servlet Specification 3,它就可以工作。
    猜你喜欢
    • 2017-03-06
    • 1970-01-01
    • 2015-12-24
    • 2017-03-05
    • 2019-08-17
    • 2018-06-25
    • 2014-12-07
    • 2016-06-09
    相关资源
    最近更新 更多