spring - Autowiring LinkedBlockingQueue 时出现空指针异常

标签 spring nullpointerexception autowired

我尝试在我的 solrQueue 中添加任何内容时遇到空指针异常。我检查了调试器,这是因为 solrQueue 为空。但是我已经在我的应用程序上下文中 Autowiring 了它,那么为什么会出现这个错误呢?

public class Check {
    @Autowired
    public LinkedBlockingQueue<SolrInputDocument> solrQueue;
    public SolrInputDocument solrDoc;   
    public void solradd(){
        solrDoc=new SolrInputDocument();
        solrDoc.addField("title", "abc");
        solrQueue.add(solrDoc);//solrQueue is null 
    }
}

应用程序上下文.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-2.5.xsd">

    <context:annotation-config />
    <!--<context:component-scan base-package="com/abc" />   -->

    <bean id="solrQueue" class="java.util.concurrent.LinkedBlockingQueue" />
    <bean id="check" class="com.abc.Check" scope="prototype" />

</beans>

最佳答案

您正在手动创建 Check 类的实例,而不是让 Spring 为您创建/返回一个实例:

Check c=new Check();
c.solradd();

这永远不会*工作,因为 Spring 不知道您创建了 Check 类。根据您如何启动 Spring 上下文,您必须显式询问应用程序上下文:

Check check = applicationContext.getBean(Check.class)

或者将 check bean 注入(inject)到其他一些组件中,比如 Controller :

@Autowired
private Check check;

另见:

* AspectJ 编织可以解决问题,但这就像用大炮杀死苍蝇一样

关于spring - Autowiring LinkedBlockingQueue 时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053977/

相关文章:

java - Spring MVC(和 angularjs)-检索图像 : high memory usage in Chrome

java - simpleJdbcTemplate 多行获取

grails - 将对象属性加载到类类型的变量中后,为什么不能访问我的对象属性

spring - 单例和 @Autowired 返回 NULL

spring - Thymeleaf 表达式对象 : #session and ${session. ...}

java - Geotools lib 突然从存储库中消失

android - 在单个项目 View Activity 中按收藏夹按钮时出现空指针异常

java - 为什么不能在 Java 中对空指针调用方法?

java - Spring @Autowired 不工作 - BeanCreationException

java - Autowired 在 Bean 类 Spring 中不起作用