在 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 旨在由 DispatcherServlet
的 HandlerMapping
堆栈管理。我想不出您想从 @Controller
bean 中得到什么。
关于java - 将@Controller注入(inject)另一个spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20959969/