0

我正在使用 Spring MVC 控制器,并且我想在开发过程中提供一些额外的请求映射方法。我可以使用 Spring 配置文件来做到这一点:

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

}

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

}

但理想情况下,我宁愿不要用引用“开发”配置文件的注释来污染生产类的代码。

我认为也许可以使用 Primary 注释,但我无法让它工作。 这篇文章似乎说这应该有效:

@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

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

4

1 回答 1

1

这里的问题是你的类DevController继承自DefaultController. 保持班级分开。即使内容相同DevController,也不要扩展。DefaultController

于 2015-06-14T19:57:59.160 回答