如何解决无法通过注解注入javabean?

新手上路,请多包涵

功能说明:
在tomcat启动时,同时开启一个线程,目前线程启动没有问题,但是由于无法注入javabean,导致空指针异常。要注入的javabean是自己封装的,用来实现特定的功能,类上有加@Component 注解,也在package-scan的扫描范围。(注:使用的SSM框架)

代码如下:

@Controller
public class UDPServer implements ServletContextListener {

    // 通过注解注入封装线程的Bean
    @Autowired
    UDPThread udpThread;

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        // 通过注入的Bean启动线程
        udpThread.execute();
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }
}
阅读 3.3k
2 个回答
✓ 已被采纳新手上路,请多包涵

问题解决了,具体过程如下:

1.在contextInitialized中添加:

UDPThread udpThread = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContextEvent.getServletContext()).getBean(MyBean.class);

2.在web.xml中添加:

  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>cn.env.web.util.UDPServer</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:/config/Spring-*.xml</param-value>
  </context-param>

参考stackoverflow写的第一步,另外还需要配置web.xml,否则tomcat无法启动:链接描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题