Spring: свойство Bean недоступно для записи или имеет неверный метод установки

1

Я знаю, что этот вопрос задавали несколько раз, но на мои глаза все правильно. Я также удалил свой код из Eclipse и позволил IDE создать геттеры/сеттеры, но безрезультатно.

Вот моя ошибка в weblogic:

Вызывается: org.springframework.beans.NotWritablePropertyException: Недопустимое свойство gpsDataAllStopsSql класса bean [com.fedex.dire.webservices.direservice.dao.GPSDataDaoImpl]: Свойство bean 'gpsDataAllStopsSql' не доступно для записи или имеет неверный метод setter. Соответствует ли тип параметра сеттера типу возврата получателя?

Здесь мой Bean & Property в моем контексте:

<bean id="dataDao" class="com.text.service.dao.DataDaoImpl" >
      <property name="dataSource" ref="dataSource" />
      <property name="gpsDataAllStopsSql">
          <value><![CDATA[SELECT A.XML_DATA,B.ADDR1,B.ADDR2,B.POSTALCODE  FROM GPS.EVENT_STAMP A LEFT OUTER JOIN DB.SCAN B ON  A.FAC_IORG_NBR=B.FACILITY AND A.SCANNER_DATE=B.SCANDATE AND A.SCANNER_ID=B.SCANNERID AND A.PD_START_TIME=B.PDSTART WHERE FAC_IORG_NBR = ?  AND SCANNER_DATE = CAST(? AS DATE) AND SCANNER_ID = ? AND PD_START_TIME = ?]]></value>
    </property> 
      <property name="gpsDataSql">
          <value><![CDATA[SELECT A.XML_DATA,A.STOP_NUMBER,B.ADDR1,B.ADDR2,B.POSTALCODE FROM GPS.EVENT_STAMP A LEFT OUTER JOIN DB.SCAN B ON  A.STOP_NUMBER=B.STOP# AND A.FAC_IORG_NBR=B.FACILITY AND A.SCANNER_DATE=B.SCANDATE AND A.SCANNER_ID=B.SCANNERID AND A.PD_START_TIME=B.PDSTART WHERE FAC_IORG_NBR = ?  AND SCANNER_DATE = CAST(? AS DATE) AND SCANNER_ID = ? AND PD_START_TIME = ? AND STOP_NUMBER = ?]]></value>
 </property> 
 </bean>

Вот методы getter и setter в моем DaoImpl:

private static String gpsDataSql = null;

private static String gpsDataAllStopsSql = null;

public static String getGpsDataSql() {
    return gpsDataSql;
}

public static void setGpsDataSql(String gpsDataSql) {
    DataDaoImpl.gpsDataSql = gpsDataSql;
}

public static String getGpsDataAllStopsSql() {
    return gpsDataAllStopsSql;
}

public static void setGpsDataAllStopsSql(String gpsDataAllStopsSql) {
    DataDaoImpl.gpsDataAllStopsSql = gpsDataAllStopsSql;
}

Есть ли что-то, что мои глаза скользят, или это может быть еще одна проблема с моей окружающей средой?

Благодарю!

  • 1
    Может быть это статическое ключевое слово в сигнатуре метода установки.
  • 0
    Точно: почему у вас есть статические поля и методы для методов получения и установки. Лучше иметь пружинный бин с одноэлементной областью действия, если оставшаяся часть кода дао не имеет состояния.
Показать ещё 1 комментарий
Теги:
spring
spring-mvc

1 ответ

1
Лучший ответ

Компонент, который вы декларируете в XML, пытается установить свойства, существующие в классе DataDaoImpl. Чтобы это правильно работало, удалите статические элементы и попробуйте следующее для своего класса:

package com.text.service.dao;

public class DataDaoImpl extends SomeOtherDaoWhereDataSourceIsDefined {
    private String gpsDataAllStopsSql;
    private String gpsDataSql;

    public String getGpsDataAllStopsSql() {
        return gpsDataAllStopsSql;
    }

    public void setGpsDataAllStopsSql(String gpsDataAllStopsSql) {
        this.gpsDataAllStopsSql = gpsDataAllStopsSql;
    }

    public String getGpsDataSql() {
        return gpsDataSql;
    }

    public void setGpsDataSql(String gpsDataSql) {
        this.gpsDataSql = gpsDataSql;
    }
}

В этой статье объясняется использование статических и нестатических элементов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню