`
villasy1989
  • 浏览: 77350 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

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,问题就解决了。
分享到:
评论

相关推荐

    spring的setter注入和构造注入(XML讲解以及常见错误)

    解决这些问题的关键在于仔细检查XML配置文件和Java类,确保配置的属性、方法和bean定义与实际代码一致,并且避免循环依赖。此外,利用Spring的`@Autowired`注解和`@Qualifier`注解可以更灵活地控制依赖注入,尤其是...

    Spring+Hibernate StringIndexOutOfBoundsException String index out解决方法

    在 Hibernate 中,这个异常可能会在多个地方出现,例如在 Hibernate 的映射文件中、在 Java 类中的 getter 和 setter 方法中等。 那么,为什么 Hibernate 的映射文件和数据库中表的字段不一致会导致这个异常的出现...

    Spring选择题(含答案).doc

    Spring 框架提供了多种方式来实现依赖注入,包括 getter 方法、setter 方法和自定义赋值方法。 A. getter 方法:通过 getter 方法来获取依赖对象。 B. setter 方法:通过 setter 方法来注入依赖对象,例如,在 ...

    lombok.jar在eclipse和sts中做相应配置可以代替get、set

    Lombok是一款Java库,它通过注解的方式简化了Java类中常见的getter、setter、equals、hashCode以及toString等方法的编写工作,极大地提高了开发效率。对于开发者而言,只需要在对应的字段或者类上添加特定的Lombok...

    Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier

    它使用反射机制实现,通过getter和setter方法进行属性的读写。其优点在于简单易用,但缺点是在大量复制操作时性能较低,因为每次复制都需要进行反射调用。 PropertyUtils是Apache Commons BeanUtils的扩展,它增强...

    lombok包+sts使用文档.zip

    - `@Getter`和`@Setter`: 分别用于生成getter和setter方法。 - `@Log4j`或`@Slf4j`: 自动导入日志框架并生成logger变量。 3. **Lombok与IDE集成** 要在STS中使用Lombok,首先需要安装Lombok插件。通常,可以在...

    Spring三种注入方式(二)

    在实际开发中,我们可以使用一些工具来简化setter注入的配置,如Lombok库的`@Data`注解,它可以自动生成getter和setter方法,减少代码量。另外,Spring Boot的`@Autowired`注解也可以自动匹配并注入bean,简化配置。...

    (源码)基于Spring Boot和Hibernate的旅行订票系统.zip

    # 基于Spring Boot和Hibernate的旅行订票系统 ## 项目简介 旅行订票系统(TROS)是一个基于Spring Boot和Hibernate框架开发的旅行订票... 通过Lombok库自动生成getter和setter方法,简化代码编写。 ## 安装使用步骤

    解决spring mvc JSON 无限死循环

    ### 解决Spring MVC JSON无限...总结来说,解决Spring MVC中的JSON无限死循环问题通常涉及调整实体类的序列化方式,使用注解或自定义序列化器等手段来避免无限递归。开发者可以根据实际需求选择合适的方法来解决问题。

    Java模拟spring实现

    实体类通常包含与数据库表字段相对应的属性,以及对应的getter和setter方法。在这个例子中,`User`类有两个属性:`username`和`password`。 接下来,我们定义了接口`UserDAO`,这是数据访问对象(Data Access ...

    spring注解

    // 省略getter和setter方法 } @Component public class Car { private String brand; private double price; // 省略getter和setter方法 } @Component public class Boss { @Autowired private Car car; ...

    Spring mvc + Spring + Spring jdbc 整合 demo

    5. **模型对象(Model)**:这些对象代表了数据库中的表,它们通常带有getter和setter方法,用于数据的封装和传递。 6. **视图(View)**:视图负责展示数据,可能使用JSP、Thymeleaf或其他模板引擎来渲染HTML页面...

    Spring2+实例

    Spring框架是Java开发中广泛应用的一个开源框架,它简化了企业级应用的开发过程,通过依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)等核心特性,提供了强大的功能。...

    spring注释详解

    自Spring 2.5版本起,Spring引入了注释驱动的配置,使得开发者可以通过在类和方法上添加注释来替代传统的XML配置文件。这种方式极大地简化了配置过程,提高了开发效率,也增强了代码的可读性和内聚性。本文将深入...

    JavaWeb开发技术-认识JavaBean.pptx

    2. **getter和setter方法**:JavaBean中的属性通常通过getter和setter方法来访问和修改。这些方法遵循驼峰命名法,如`getName()`和`setName(String name)`用于处理名称属性。对于布尔类型的属性,getter方法通常命名...

    commons-beanutils-1.8.2-src官方源文件,是你学习beanutils工具的必备资料

    - **属性访问**:通过getter和setter方法,BeanUtils可以方便地读取和设置Bean的属性,无需直接调用这些方法。例如,`getProperty()`和`setProperty()`方法。 - **属性复制**:BeanUtils提供`copyProperties()`...

    Spring boot 目录结构总结

    在这个类中,我们可以定义与数据库表对应的字段,并提供相应的 getter 和 setter 方法。使用 Lombok 注解,我们可以自动生成 getter 和 setter 方法,简化代码的书写。同时,我们可以使用 @ApiModel 和 @...

    实验 spring 声明事务

    在实验中,定义了一个名为`User`的实体类,包含了id、uname、upwd、sex和identify等属性,以及相应的构造函数、getter和setter方法。实体类是数据库操作的基本单位,用于映射数据库表中的记录。 声明式事务管理的...

    Springboot-lombok

    3. `@Setter` 和 `@Getter`:这两个注解分别用于为指定的字段生成setter和getter方法。可以单独使用,也可以针对某个字段。 4. `@ToString`:生成一个包含所有字段的toString方法,用于打印类的实例信息。 5. `@...

Global site tag (gtag.js) - Google Analytics