簡體   English   中英

不存在配置文件時的默認Spring Bean

[英]Default Spring bean when profile is not present

我正在使用Spring MVC控制器,我想在開發過程中提供一些額外的請求映射方法。 我可以使用Spring配置文件執行此操作:

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

}

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

}

但理想情況下,我不希望通過引用“ dev”配置文件的注釋來污染生產類的代碼。

我認為使用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

我想做的事可能嗎? 如果是這樣,我該怎么辦?

這里的問題是您的類DevControllerDefaultController繼承。 將課程分開。 即使內容相同,也不要使用DefaultController擴展DevController

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM