簡體   English   中英

在bean中傳遞值時出錯

[英]error passing a value in a bean

在Spring中傳遞整數時出現錯誤。

<bean id="propConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="/WEB-INF/application.properties"/>
 </bean>

<bean id="portListenerService" class="com.service.portListenerService" scope="prototype" lazy-init="true" parent="abstractService">
    <property name="devicePort" value="${devicePort}"/>
</bean>

portListenerService.java:

@Required
public final void setDevicePort(Integer devicePort) {
    this.devicePort= devicePort;
}

這是正確的方法嗎? 因為出現錯誤:

org.springframework.beans.factory.BeanCreationException:在ServletContext資源[/WEB-INF/service-config.xml]中定義的名稱為'portListenerService'的bean創建時出錯:bean初始化失敗; 嵌套的異常是org.springframework.beans.TypeMismatchException:無法將類型[java.lang.String]的屬性值轉換為屬性“ devicePort”的必需類型[int]; 嵌套異常為java.lang.IllegalArgumentException:原始不得為null

即使當我對端口進行硬編碼而不是從application.properties中提取端口時,我也會遇到相同的錯誤。 還有其他問題嗎?

它可能與字段類型無關。 通常,這種情況會在設置器出現問題時發生,請確保設置器以返回類型void存在,並且您的字段必須以小寫字母開頭,並且設置器顯然會以駝峰大小寫作為前綴“ set”的屬性。

例如; 我最近遇到了同樣的問題,並且發現該屬性中的一封信在二傳手中有不同的大小寫。

<bean name="gateway" class="com.xxxx.yyyy.zzz.MyClass" init-method="init">
    ...     
    <property name="stateLogIntervalms" value="${mux.state.log.interval.ms}" />  
    ...   
</bean>

我的類中的屬性定義正確,如下所示;

protected Long stateLogIntervalms;

但是這樣的錯誤的定義是setter;

public void setStateLogIntervalMs(Long stateLogIntervalms) {
    this.stateLogIntervalms = stateLogIntervalms;
}

您會注意到倒數第二個字母“ M”與xml屬性和java類中的字母大小寫不同。

快樂編碼:)

在此討論中,devicePort相關的代碼是否可能違反javabean規范?

暫無
暫無

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

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