防止Spring @RequestMapping加载出依赖项

时间:2016-05-24 08:49:55

标签: java spring spring-mvc spring-boot

背景

我有许多小型微服务类型的应用程序,它们都使用@RestController& amp; @RequestMapping。由于他们通常是互相交谈,因此我通过HTTP提供了每个JAR,但我也可以在其他项目中包含每个JAR以直接访问其功能。这已成为一个问题;因为JAR的映射在它启动时被映射到宿主应用程序中......在我看来这将是一个安全问题。

是否可以阻止某些映射被Spring加载?

1 个答案:

答案 0 :(得分:0)

这是我不时使用的食谱:

  • 首先将jar拆分为两个(或更多)单独的jar文件,并仅包含必要的依赖项,即省略暴露安全问题的依赖项。
  • 确保罐子使用不同的包装名称,并且包装名称不会嵌套在罐子之间。
  • 最后,您可以在负责自己的组件扫描的每个依赖项中创建配置,请参阅下文。

在依赖关系jar中,创建一个配置类:

package com.example.dependency;

@Configuration
@ComponentScan("com.example.dependency")
public class DependencyConfig {
    // possibly return other @Bean declarations
}

在Spring Boot应用程序中(在另一个jar中),您可以@Import依赖配置:

package com.example.application;

@SpringBootApplication
@Import(DependencyConfig.class)
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args); 
    }
}

好处是MainApplication不需要知道它需要扫描哪个依赖包,它是隐藏在依赖jar中的实现细节。