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得到的任何东西.

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...