自定义dao层继承JdbcDaoSupport疑问

baidu_36596811 2017-07-21 05:27:19
自定义dao层继承JdbcDaoSupport, 有一个疑问,百思不得其解, 为什么在子类的自定义dao层的方法中可以直接使用 this.getJdbcTemplate() 得到返回值. 源码中jdbcTemplate 成员变量不是私有的吗,在子类为何还能得到它的值呢?


public abstract class JdbcDaoSupport extends DaoSupport {

private JdbcTemplate jdbcTemplate;


/**
* Set the JDBC DataSource to be used by this DAO.
*/
public final void setDataSource(DataSource dataSource) {
if (this.jdbcTemplate == null || dataSource != this.jdbcTemplate.getDataSource()) {
this.jdbcTemplate = createJdbcTemplate(dataSource);
initTemplateConfig();
}
}


protected JdbcTemplate createJdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}


public final DataSource getDataSource() {
return (this.jdbcTemplate != null ? this.jdbcTemplate.getDataSource() : null);
}
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
你好sun悟空 2017-07-23
  • 打赏
  • 举报
回复
JdbcDaoSupport,中的jdbcTemplate虽然是私有的,但是成员私有,一般会对外提供set和get方法 于是,我们可以在子类通过get方法拿到父类的jdbcTemplate 我们没有直接去获取成员变量,只是通过非私有的get方法获取的 这就是为什么我们写this.getJdbcTemplate()而不是this.jdbcTemplate的原因,后者是直接拿属性,那必须拿不到
baidu_36596811 2017-07-21
  • 打赏
  • 举报
回复
子类中方法中调用 this.getJdbcTemplate() 不是应该返回null 吗?
李德胜1995 2017-07-21
  • 打赏
  • 举报
回复
不是提供了public final JdbcTemplate getJdbcTemplate()方法吗?return this.jdbcTemplate;返回jdbcTemplate

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧