将@Controller注入另一个spring bean

 幸福的xinwangnanfei_736 发布于 2023-02-06 10:46

在一个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.

我想避免讨论为什么我要注入控制器,我宁愿创建一个额外的抽象级别,而是注入它:)

1 个回答
  • 我将假设您的SomeSpringBean类是由加载的根上下文扫描的组件ContextLoaderListener.

    我将假设您的@Controller注释类由加载的servlet上下文扫描DispatcherServlet.

    在这种情况下,根上下文无权访问servlet上下文中的bean.只有反过来才是真的.

    您需要将该SomeSpringBean类放在一些必须由servlet上下文扫描的其他包中.


    如果我的假设是错误的,请添加您的上下文配置.


    这不是一个好主意.@Controller豆是指由被管理DispatcherServletHandlerMapping堆栈.我想不出你想从@Controller豆子里得到什么.

    2023-02-06 10:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有