java - 配置文件不存在时的默认 Spring bean

标签 java spring spring-mvc spring-profiles

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

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

}

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

}

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

我认为也许可以使用主要注释,但我无法让它工作。 This post似乎说这应该有效:

@Controller
public class DefaultController {

}

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

}

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

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。将类(class)分开。即使内容相同,也不要使用 DefaultController 扩展 DevController

关于java - 配置文件不存在时的默认 Spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30833738/

相关文章:

java - 从同一个客户端高效地向同一个服务器发送多个 HTTP 请求

spring - 为什么 Maven 会下载不同版本的 Spring Artifact ?

Spring MVC 在 session 中保存用户数据

java - Spring Rest Hibernate 创建嵌套对象

java - 无法从标准 JAR 文件中读取 TLD "META-INF/c.tld"

java - 未定义名为 'springSecurityFilterChain' 的 bean - Spring 4 Java 配置

java - 访问存储在 Java 列表中的对象属性并进行迭代

java - 轻巧快速的android json解析器?

java - 不幸的是,应用程序已阻止大脑游戏应用程序中的错误

Spring 没有唯一的 bean 类型