spring中getter和setter方法类型一致问题

在项目开发中遇到了这样一个问题,使用ibatis进行持久层的操作,在一个类里边要使用到SqlMapClientTemplate类,用来进行数据库的访问,定义对象mysqlReaderMap,同时定义了setter方法和getter方法,在spring的配置文件中是这样配置的:
<bean id="mysqlReaderDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:baoxianMysqlReaderDS" />
</bean>
<bean id="mysqlReaderMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="WEB-INF/ibatis/mysql/config.xml" />
<property name="dataSource" ref="mysqlReaderDataSource" />
</bean>
这段定义了mysqlReaderDataSource和mysqlReaderMapClient两个bean,其他一切正常的情况下启动服务器,无法启动或者启动成功,但是当我们要使用该bean时,该bean mysqlReaderMapClient为空,导致无法使用。通过输出错误信息,确定原因是getter和setter的类型不匹配,具体就是setter的参数类型和getter的返回类型不一致,导致了无法注入,代码如下:
public void setMysqlReaderMapClient(SqlMapClient mysqlReaderMapClient) {
this.mysqlReaderMapClient = new SqlMapClientTemplate(mysqlReaderMapClient);
}
public void setMysqlWriterMapClient(SqlMapClient mysqlWriterMapClient) {
this.mysqlWriterMapClient = new SqlMapClientTemplate(mysqlWriterMapClient);
}
public SqlMapClientTemplate getMysqlReaderMapClient() {
return mysqlReaderMapClient;
}
public SqlMapClientTemplate getMysqlWriterMapClient() {
return mysqlWriterMapClient;
}
因为注入的是spring的SqlMapClient,而我们在程序中要真正使用的ibatis的SqlMapClient,因此在程序里进行了转化,导致了setter的参数类型和getter类型不一致,导致了错误。
解决方法是,不使用getter方法的标准的命名方式去命名,而是用自定义的方式,将原来的getMysqlReaderMapClient和getMysqlWriterMapClient改命名为getMysqlReader和getMysqlWriter,问题就解决了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值