java - 将@Controller注入(inject)另一个spring bean

标签 java spring spring-mvc dependency-injection

在 spring mvc 项目中,我想将 @Controller 注入(inject)到不同的 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。

我想避免任何关于我为什么要注入(inject) Controller 的讨论,我宁愿创建一个额外的抽象级别并注入(inject)它:)

最佳答案

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

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

在这种情况下,根上下文无法访问 servlet 上下文中的 bean。反之亦然。

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


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


这不是一个好主意。 @Controller bean 旨在由 DispatcherServletHandlerMapping 堆栈管理。我想不出您想从 @Controller bean 中得到什么。

关于java - 将@Controller注入(inject)另一个spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959969/

相关文章:

java - Controller 未重定向到我的 jsp

java - Spring Hibernate 中的@Transient 方法调用

java - 我的问题直接而简单 x 的值在这里返回 5 但为什么这背后的原因是什么

java - SynchronizedMap 类中重载构造函数的目的

java - Java 中的嵌套复选框

java.lang.IllegalArgumentException : Iteration variable cannot be null

java - 注入(inject) MockMVC 测试

java - 如何读取 <default.package> 中文本文件的内容 [Java]

java - Spring需要重新启动服务器来刷新域对象

java - 如何配置 Spring 3 MVC 来处理类似于异常的错误?