簡體   English   中英

將@Controller注入另一個spring bean

[英]Inject @Controller into another spring bean

在一個spring mvc項目中,我想將一個@Controller注入一個不同的bean,如下所示:

@Controller
public class MyController {
  ..
}

@Component
public class SomeSpringBean {
  @Resource
  private MyController myController;

  ..
}

這似乎不起作用,雖然@Controller注釋是@Component的特化,就像@Service(它確實有效)一樣:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com..Mycontroller] is defined

我也嘗試直接從ApplicationContext獲取bean。

我想避免討論為什么我要注入控制器,我寧願創建一個額外的抽象級別,而是注入它:)

我將假設您的SomeSpringBean類是由ContextLoaderListener加載的根上下文掃描的組件。

我將假設您的@Controller注釋類由DispatcherServlet加載的servlet上下文進行掃描。

在這種情況下,根上下文無權訪問servlet上下文中的bean。 只有反過來才是真的。

您需要將SomeSpringBean類放在一些必須由servlet上下文掃描的其他包中。


如果我的假設是錯誤的,請添加您的上下文配置。


這不是一個好主意。 @Controller bean意味着由DispatcherServletHandlerMapping堆棧管理。 我想不出你想從@Controller bean得到什么。

暫無
暫無

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

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