簡體   English   中英

空指針異常-彈簧3

[英]Null Pointer Exception - spring 3

我在applicationContext.xml文件(春季3)中使用以下語句。

<bean name="loggingAutoProxy"
      class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 

在這個applicationContext文件中,當我嘗試為bean屬性名稱和引用指定其他名稱時,它返回空對象。 但是,如果我為名稱和引用提供相同的值,則它工作正常/正確返回了bean引用。 這是因為org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator嗎? 是,如何解決?

這不起作用(在我的Java代碼中將bean引用返回為null):

<bean id="cacheDelegate" class="com.srsa.wiradmin.delegate.CacheDelegate" > 
<property name="statusDBDAO"><ref bean="BMOStatusDBDAO" /></property> 
</bean> 

 <bean id="BMOStatusDBDAO" class="com.srsa.wiradmin.dao.StatusDBDAO">
        <property name="dataSource">
            <ref bean="BMOAdminDataSource" />
        </property>
</bean>
    <bean id="BMOAdminDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
                    destroy-method="close" lazy-init="default" autowire="default" dependency-check="default">
            <property name="driverClass" value="${jdbc.driver}" ></property>
            <property name="jdbcUrl" value="${admin.jdbc.url}" ></property>
            <property name="user" value="${admin.jdbc.user}" ></property>
            <property name="password" value="${admin.jdbc.password}" ></property>
            <property name="initialPoolSize" value="3" ></property>
            <property name="minPoolSize" value="3" ></property>
            <property name="maxPoolSize" value="25" ></property>
            <property name="acquireIncrement" value="1" ></property>
            <property name="acquireRetryDelay" value="1000" ></property>
            <property name="debugUnreturnedConnectionStackTraces" value="true" ></property>
            <property name="maxIdleTime" value="300" ></property>
            <property name="unreturnedConnectionTimeout" value="300000" ></property>
            <property name="preferredTestQuery" value="SELECT COUNT(*) FROM LOCALE_CODE" ></property>
            <property name="checkoutTimeout" value="300000" ></property>
            <property name="idleConnectionTestPeriod" value="600000" ></property>
</bean>

這有效(正確返回對象):

<bean id="cacheDelegate" class="com.srsa.wiradmin.delegate.CacheDelegate" > 
<property name="statusDBDAO"><ref bean="statusDBDAO" /></property> 
</bean> 

 <bean id="statusDBDAO" class="com.srsa.wiradmin.dao.StatusDBDAO">
        <property name="dataSource">
            <ref bean="BMOAdminDataSource" />
        </property>
</bean>

    <bean id="BMOAdminDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
                    destroy-method="close" lazy-init="default" autowire="default" dependency-check="default">
            <property name="driverClass" value="${jdbc.driver}" ></property>
            <property name="jdbcUrl" value="${admin.jdbc.url}" ></property>
            <property name="user" value="${admin.jdbc.user}" ></property>
            <property name="password" value="${admin.jdbc.password}" ></property>
            <property name="initialPoolSize" value="3" ></property>
            <property name="minPoolSize" value="3" ></property>
            <property name="maxPoolSize" value="25" ></property>
            <property name="acquireIncrement" value="1" ></property>
            <property name="acquireRetryDelay" value="1000" ></property>
            <property name="debugUnreturnedConnectionStackTraces" value="true" ></property>
            <property name="maxIdleTime" value="300" ></property>
            <property name="unreturnedConnectionTimeout" value="300000" ></property>
            <property name="preferredTestQuery" value="SELECT COUNT(*) FROM LOCALE_CODE" ></property>
            <property name="checkoutTimeout" value="300000" ></property>
            <property name="idleConnectionTestPeriod" value="600000" ></property>
</bean>

再見...

您的cacheDelegate bean正在查找一個引用到ID statusDBDAO的bean,但DAO上的ID實際上是BMOStatusDBDAO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM