Java 为什么以及何时使用动态servlet注册?

Java 为什么以及何时使用动态servlet注册?,java,spring,spring-boot,jhipster,Java,Spring,Spring Boot,Jhipster,我正在调查JHipster生成的spring boot项目,发现所有请求映射都不是通过web.xml完成的(AFAIK,spring boot是通过创建web.xml完成的,没关系),不是通过spring的RequestMapping,而是如下所示: ServletRegistration.Dynamic someServlet= servletContext.addServlet("someServlet", new SomeServlet()); som

我正在调查JHipster生成的spring boot项目,发现所有请求映射都不是通过web.xml完成的(AFAIK,spring boot是通过创建web.xml完成的,没关系),不是通过spring的
RequestMapping
,而是如下所示:

 ServletRegistration.Dynamic someServlet=
                servletContext.addServlet("someServlet", new SomeServlet());

 someServlet.addMapping("/someUrl");
 someServlet.setAsyncSupported(true); 
我的问题是:

  • 动态注册代替经典映射有什么合理的优势吗
  • 这是SpringBoot注册映射的标准还是jhipster所有者的意愿
  • someServlet.setAsyncSupported(true)
    仅仅是另一种做出
    响应的方法。setHeader(“访问控制允许源代码”,“*”
  • 动态注册代替经典映射有什么合理的优势吗
  • 动态servlet注册servlet 3+注册servlet的方式。在Servlets 3中,您可以避免创建
    web.xml
    ,并用纯Java配置应用程序。它为您提供了一些优势,如编译时检查是否一切正常,以及更重要的是,因为您是在Java代码中执行的,所以您可以执行一些额外的检查或条件,例如,仅当设置了环境属性或类路径上的类可用时,才注册特定的servlet

    它不是
    @RequestMapping
    的替代品。在SpringBoot的情况下,当您想在JHipster中注册一些类似于第三方servlet的servlet时,您很可能会使用它

  • 这是SpringBoot注册映射的标准还是jhipster所有者的意愿
  • 至少有两种方法可以在Spring Boot中注册额外的servlet。请参见此处的答案:

    您可以像往常一样使用
    @RequestMapping
    映射自己的控制器

  • 是否支持someServlet.setAsyncSupported(true)只是另一种做出响应的方式。setHeader(“访问控制允许源代码”、“*”)

  • 没有。要设置此标题,通常使用CORSFilter(阅读更多:)
    asyncSupported
    标志用于使servlet能够异步处理请求

    以上都没有?这只是Servlet3.0+注册Servlet的方式,基本上是web.xml的替代品。