是否可以仅在未映射@RestController的情况下映射它?

时间:2016-07-11 16:30:40

标签: java spring spring-mvc

所以我有一个控制器映射到/ App / Health并对功能进行了一些更改,将其移动到自己的项目中以允许将其作为依赖项包含,而不必手动设置它。

然而,一些服务已经设置好了,如果可能的话,我希望新控制器只在路径没有被旧路径映射时才自行创建。

现有:

@RestController
@RequestMapping("/App")
public class ApplicationController {

    @RequestMapping(value="/Health", method=RequestMethod.GET)
    public String health() {
        return "Ok!";
    }
}

新:

@RestController
public class HealthCheck {

    @RequestMapping("/App/Health")
    public String health() {
        return "Ok!";
    }
}

所以,鉴于这两个包存在两个不同的包中,是否可以制作" New"可选地实例化"现有"没有按'?吨

2 个答案:

答案 0 :(得分:0)

如果你将你的代码作为一个lib分发,那么使用package-scan(我猜这就是问题)是很奇怪的。应用程序应该控制它创建的bean。

所以你可以通过XML或Java配置手动设置bean,如果有一个控制器来完成这项工作,就不要为lib创建一个bean。

答案 1 :(得分:0)

事实证明,上面的代码正常运作。

因为第一个定义了RequestMethod.GET而新的不定义,这导致新的映射到所有方法除了已经特定绑定的任何方法。

我添加了另一个端点,它映射到RequestMethod.GET的所有内容并返回一个错误,导致新的一个映射到“Everything available”的映射到GET(如果现有的那个没有),或者Nothing如果现有的那个。