ошибка передачи значения в бине - PullRequest
1 голос
/ 24 марта 2011

Я получаю сообщение об ошибке при передаче целого числа через пружину.

<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: Ошибка создания бина с именем 'portListenerService', определенного в ресурсе ServletContext [/WEB-INF/service-config.xml]: сбой инициализации бина; вложенным исключением является org.springframework.beans.TypeMismatchException: не удалось преобразовать значение свойства типа [java.lang.String] в требуемый тип [int] для свойства 'devicePort'; вложенное исключение - java.lang.IllegalArgumentException: оригинал не должен быть нулевым

Даже когда я жестко кодирую порт вместо application.properties, я получаю ту же ошибку. Что-то не так?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2015

Это может не иметь никакого отношения к типу поля. Обычно это происходит, когда есть проблема с установщиками, убедитесь, что установщик существует с типом возвращаемого значения 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;

Однако определение сеттера неверно, как это;

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

вы можете заметить, что вторая последняя буква 'M' отличается от той, что была у меня в свойстве xml и классе java.

Happy Coding:)

0 голосов
/ 25 марта 2011

Может ли связанный с devicePort код нарушать спецификации javabean - как в этом обсуждении ?

...