相关疑难解决方法(0)

使用多个调度程序servlet/web上下文与spring boot

我创建了一个带有父上下文(服务)和子上下文(spring-webmvc控制器)的spring启动应用程序:

@Configuration
public class MainApiApplication {

    public static void main(String[] args) {
        new SpringApplicationBuilder()
                .parent(Services.class)
                .child(ApiOne.class, MainApiApplication.class)
                .run(args);
    }

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        return new TomcatEmbeddedServletContainerFactory();
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我想为我的ApiTwo.class配置添加另一个客户端上下文(和DispatcherServlet).我想我必须做两件事:

  1. 将servletContainer(因此MainApiApplication.class配置)移出子上下文和
  2. 添加路径映射/ one/ - > ApiOne.class和/ two/ApiTwo.class

什么是弹簧靴方式呢?

java spring servlets spring-mvc spring-boot

23
推荐指数
2
解决办法
2万
查看次数

带有多个调度程序servlet的Spring Boot(JAR),用于使用Spring Data REST的不同REST API

我有一个使用Spring Boot生成可执行JAR的项目,该JAR使用Spring Data REST公开REST API.它还与Spring Security OAuth集成.这很好.我的问题如下,

我希望只有当具有JPA存储库的对应JAR位于类路径中(它已被定义为依赖项)时,我才想要启用REST API的不同模块.

问题是我希望他们彼此独立.我希望能够在具有不同映射的不同调度程序servlet下为它们提供服务,因此我可以为每个映射指定不同的baseUri,并为资源发现提供不同的根URL.

我会试着让它更清楚:

  • API模块A:

    • 包含例如资源X和Y的XRespository和YRespository的JAR.
    • 调度程序servlet A.
    • Servlet映射:/ api/moduleA /
    • Spring Data REST的基URI:/ api/moduleA /
    • 如果我检查URL/api/moduleA /我应该发现资源X和Y.
  • API模块B:

    • 包含例如资源P和Q的PRespository和QRespository的JAR.
    • 调度程序servlet B.
    • Servlet映射:/ api/moduleB /
    • Spring Data REST的基URI:/ api/moduleB /
    • 如果我检查URL/api/moduleB /我应该发现资源P和Q.
  • 更多模块......

除此之外,我可以拥有另一个调度程序servlet,我将/ oauth/*端点与其他自定义控制器一起保存,并且安全配置必须适用于所有(/*)

我知道我可以通过ServletRegistrationBean定义更多的调度程序servlet,但我不知道如何附加到每个不同的弹簧数据休息配置.

我也一直在尝试使用SpringApplicationBuilder的分层应用程序上下文,在每个子上下文中包含定义每个调度程序servlet的配置,每个RepositoryRestMvcConfiguration并使每个@EnableJpaRepositories注释定义要扫描的不同包.无论如何我甚至无法加载上下文,因为它们没有被创建为WebApplicationContext因此失败,因为没有可用的ServletContext.

任何帮助/建议?提前致谢.

java spring spring-data-jpa spring-data-rest spring-boot

6
推荐指数
1
解决办法
3006
查看次数