ssm下使用监听器,注入service,一直报错:No bean named xxx available

qq_36531147 2017-09-17 10:34:57
ssm下使用监听器:



已经在Service上注明了@Service("articeService")

一直这个错,找不到可用的articleService ,能想到的办法都是了,还是报这个错,各位老哥帮我看看,怎么回事?该怎么做,感激不尽
...全文
6016 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36531147 2017-09-18
  • 打赏
  • 举报
回复
多谢各位大哥的解惑,问题已经解决了,谢谢 这是我写的代码 @Component public class DataListener implements ApplicationListener<ContextRefreshedEvent> { @Autowired private ArticleService articleService; public void onApplicationEvent(ContextRefreshedEvent cre) { // TODO Auto-generated method stub ApplicationContext applicationContext = cre.getApplicationContext(); WebApplicationContext webApplicationContext = (WebApplicationContext)applicationContext; ServletContext servletContext = webApplicationContext.getServletContext(); articleService = (ArticleService) applicationContext.getBean("articleService"); List ls = articleService.selectHomeDate(); servletContext.setAttribute("alist", ls); } } 能用了,非常感谢
那年花 2017-09-18
  • 打赏
  • 举报
回复
1> 写一个类继承spring的ApplicationListener监听,并监控ContextRefreshedEvent事件(容易初始化完成事件) 2> 在applicationContext.xml文件中配置相应的bean实现自动装载 定义简单的bean:<bean id="beanDefineConfigue" class="com.creatar.portal.webservice.BeanDefineConfigue"></bean>   在applicationContext.xml中注册完成后,保持@Service注解
水很深 2017-09-18
  • 打赏
  • 举报
回复
引用 7 楼 qq_36531147 的回复:
[quote=引用 5 楼 jjssff1123 的回复:] servletContextListener是监听项目启动的,项目启动时spring还没有启动,还没开始扫描service,所以是空 监听器用ApplicationListener<ContextRefreshedEvent>,这个是监听spring和springmvc启动的
这个怎么用?我是小白。。[/quote] public class MyListener implements ApplicationListener<ContextRefreshedEvent>{ @Override public void onApplicationEvent(ContextRefreshedEvent event) { //spring加载完毕后执行 if(applicationContext.getParent()==null){ //执行你自己的逻辑 } } } 然后在xml中配置一个bean <bean class="类路劲.MyListener"></bean>
qq_36531147 2017-09-18
  • 打赏
  • 举报
回复
引用 5 楼 jjssff1123 的回复:
servletContextListener是监听项目启动的,项目启动时spring还没有启动,还没开始扫描service,所以是空 监听器用ApplicationListener<ContextRefreshedEvent>,这个是监听spring和springmvc启动的
这个怎么用?我是小白。。
qq_36531147 2017-09-18
  • 打赏
  • 举报
回复
引用 4 楼 sanjuejianke 的回复:
之所以加@Autowired没有用,是因为@Autowired根据类名,然后第一张字母小写来查找的,然后会去找articleService,但是因为你给ArticleService类加的注解是@Service("articeService"),注意括号里面是articeService而不是articleService,所以找不到 所以,两种解决方法, 一,按1楼说的,加@Autowired,但是ArticleService上的注解改为@Service或@Service("articleService") 二、在articleService变量上加@Resource(name="articeService"),
我是在发帖时写错了。。。这两种都试过,还是这个错,no bean named xxx available
水很深 2017-09-18
  • 打赏
  • 举报
回复
servletContextListener是监听项目启动的,项目启动时spring还没有启动,还没开始扫描service,所以是空 监听器用ApplicationListener<ContextRefreshedEvent>,这个是监听spring和springmvc启动的
sjjk 2017-09-18
  • 打赏
  • 举报
回复
之所以加@Autowired没有用,是因为@Autowired根据类名,然后第一张字母小写来查找的,然后会去找articleService,但是因为你给ArticleService类加的注解是@Service("articeService"),注意括号里面是articeService而不是articleService,所以找不到 所以,两种解决方法, 一,按1楼说的,加@Autowired,但是ArticleService上的注解改为@Service或@Service("articleService") 二、在articleService变量上加@Resource(name="articeService"),
普通上班族 2017-09-18
  • 打赏
  • 举报
回复
上下文中配置的先后顺序是不是有问题
qq_36531147 2017-09-18
  • 打赏
  • 举报
回复
引用 1 楼 long_539437 的回复:
在articleService加@Autowired
这没用,不能自动装载的,只能使用提供的工具类去获取
  • 打赏
  • 举报
回复
在articleService加@Autowired

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧