如何为多个Spring Boot类分配上下文路径前缀?

时间:2019-03-13 15:26:21

标签: java spring spring-boot

我的Spring Boot项目中有很多资源。我不希望给它们完全静态的路径,而希望使前缀(即/ attributes /,/ entitites /等)可配置。以前,我使用servlet.context-path设置,但我想在我的项目中为每个包设置不同的路径,并为静态资源设置不同的路径...

即包实体中的所有bean被映射到前缀为/{servlet.context-path}/entities/{RequestMapping}的上下文,包属性中的所有bean都映射到/{servlet.context-path}/attributes/{RequestMapping}在每个单个bean中指定静态前缀,例如/ attributes / static / list。

1 个答案:

答案 0 :(得分:0)

如果您想为每个包添加前缀RequestMapping并且不想重复您的代码,则可以为每个包创建一个抽象控制器。例如:

@RequestMapping(value = "/entities", produces = {MediaType.APPLICATION_JSON_VALUE, MediaTypes.HAL_JSON_VALUE})
public abstract class EntitiesAbstractController {
}

@RequestMapping(value = "/attributes", produces = {MediaType.APPLICATION_JSON_VALUE, MediaTypes.HAL_JSON_VALUE})
public abstract class AttributesAbstractController {
}

然后在您的控制器中将有:

@RestController
public class ChildController extends EntitiesAbstractController{
   @GetMapping(value="/PATH_SUFFIX_HERE")
   //method here
}

因此,在您的servlet.context-path旁边,您将拥有如下所示的端点:

/{servlet.context-path}/entities/PATH_SUFFIX_HERE
/{servlet.context-path}/attributes/PATH_SUFFIX_HERE