java – 将@Controller注入另一个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意味着由dispatcherServlet的HandlerMapping堆栈管理.我想不出你想从@Controller bean得到的任何东西.

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...