java - Spring:Bean 属性不可写或具有无效的 setter 方法

标签 java spring spring-mvc

我知道这个问题已被问过多次,但在我看来,一切都是正确的。我还从 Eclipse 中删除了代码,并让 IDE 创建 getter/setter,但没有效果。

这是我在 weblogic 中的错误:

引起:org.springframework.beans.NotWritablePropertyException:bean 类 [com.fedex.dire.webservices.direservice.dao.GPSDataDaoImpl] 的无效属性“gpsDataAllStopsSql”:Bean 属性“gpsDataAllStopsSql”不可写或具有无效的 setter 方法。 setter 的参数类型与 getter 的返回类型是否匹配?

这是我的上下文中的 Bean 和属性:

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

以下是我的 DaoImpl 中的 getter 和 setter 方法:

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

我的眼睛是否在滑过某些东西,或者可能是我的环境的另一个问题?

谢谢!

最佳答案

您在 XML 中声明的 bean 尝试设置 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;
    }
}

This article解释静态与非静态成员的用法。

关于java - Spring:Bean 属性不可写或具有无效的 setter 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180528/

相关文章:

java - Spring 如何在 mongo 中构建它的 like* 查询?

java - 使用 @ActivateProfiles 在 JUnit5 测试中加载不正确的 SpringBoot 属性文件

java - 在调用 Controller 之前,如何在 Spring 中将一个请求参数转换为多个请求参数?

Java 线程安全、数据竞争和良好的实现

java - 如何在 jsp 文件中创建 for 循环以便在表中生成多行?

java - 如何在电子邮件正文中嵌入图像 - Android

java - 修改控制 C 命令信号以允许输入

java - spring security在哪里取值来替换通配符?

SpringMVC : Could not instantiate property type [java. lang.Double]自动增长嵌套属性路径

java - 使用 Azure 门户中的 Web 应用程序凭据访问 Java 中的 Microsoft Graph Rest 服务