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

在项目开发中遇到了这样一个问题,使用ibatis进行持久层的操作,在一个类里边要使用到SqlMapClientTemplate类,用来进行数据库的访问,定义对象mysqlReaderMap,同时定义了setter方法和getter方法,在spring的配置文件中是这样配置的:







这段定义了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,问题就解决了。

你可能感兴趣的:(spring中getter和setter方法类型一致问题)