Null Pointer Exception while Autowiring LinkedBlockingQueue

16,730

You are creating an instance of Check class manually rather than asking Spring to create/return one for you:

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

This will never* work since Spring has no knowledge about you created Check class. Depending on how do you start you Spring context, you must either explicitly ask the application context:

Check check = applicationContext.getBean(Check.class)

or inject the check bean into some other compoent like controller:

@Autowired
private Check check;

See also:

* AspectJ weaving will do the trick, but this is like using a cannon to kill a fly

Share:
16,730
sparkle
Author by

sparkle

Updated on June 05, 2022

Comments

  • sparkle
    sparkle almost 2 years

    I am getting null pointer exception while trying to add anything in my solrQueue. I checked in debugger and it is because solrQueue is null. But I have autowired it in my application context then why this error?

    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 
        }
    }
    

    application Context.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>