Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将@Controller注入另一个Springbean_Java_Spring_Spring Mvc_Dependency Injection - Fatal编程技术网

Java 将@Controller注入另一个Springbean

Java 将@Controller注入另一个Springbean,java,spring,spring-mvc,dependency-injection,Java,Spring,Spring Mvc,Dependency Injection,在一个spring mvc项目中,我想将@Controller注入另一个bean中,如下所示: @Controller public class MyController { .. } @Component public class SomeSpringBean { @Resource private MyController myController; .. } 这似乎不起作用,尽管@Controller注释是@Component的专门化,就像@Service(它确实起作

在一个spring mvc项目中,我想将@Controller注入另一个bean中,如下所示:

@Controller
public class MyController {
  ..
}

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

  ..
}
这似乎不起作用,尽管@Controller注释是@Component的专门化,就像@Service(它确实起作用)一样:

我还尝试直接从ApplicationContext获取bean


我不想讨论我为什么要注入控制器,而是应该创建一个额外的抽象级别并注入它:)

我假设您的
SomeSpringBean
类是由
ContextLoaderListener
加载的根上下文扫描的组件


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

在这种情况下,根上下文不能访问servlet上下文中的bean。只有相反的是正确的

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


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



这不是一个好主意
@Controller
bean将由
DispatcherServlet
HandlerMapping
堆栈管理。我想不出你想从
@Controller
bean中得到什么。

这个消息意味着在定义了某个Springbean的Spring上下文中没有
MyController
(要么控制器在Dispatcher Servlet上下文中-(但这将不可避免地导致讨论:-)),要么根本不是自动屏蔽的。注意:当您按类型自动连线时,即您知道它的类型是MyController,您应该使用
@Autowired
@Inject
来代替,
@Resource
用于按名称连线bean-使用仅针对Spring的
@Resource
的“后退”行为不是一个好的做法。宾果!这又是两个应用程序上下文。谢谢至于我为什么要这么做——控制器公开REST服务,这些服务由外部客户机使用。除此之外,我还希望在不同的模型中包含相同服务的结果。我得换一种方式。
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com..Mycontroller] is defined