我正在使用Spring MVC控制器,我想在开发过程中提供一些额外的请求映射方法。我可以使用Spring配置文件执行此操作:

@Controller
@Profile("!dev")
public class DefaultController {

}

@Controller
@Profile("dev")
public class DevController extends DefaultController {

}


但理想情况下,我不希望通过引用“ dev”配置文件的注释来污染生产类的代码。

我认为使用Primary注释可能是可行的,但我无法使其正常工作。
This post似乎说这应该起作用:

@Controller
public class DefaultController {

}

@Controller
@Profile("dev")
@Primary
public class DevController extends DefaultController {

}


但是当我这样做时,Spring尝试在“ dev”配置文件下启动时尝试加载两个控制器,并失败

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0'
...
There is already 'defaultController' bean method


我想做的事可能吗?如果是这样,我该怎么办?

最佳答案

这里的问题是您的类DevController继承自DefaultController。将课程分开。即使内容相同,也不要用DevController扩展DefaultController

10-06 13:46