在一个
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得到的任何东西.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。