使用 JdbcTemplate 字段扩展 java spring 单例抽象 class

Extending a java spring singleton abstract class with JdbcTemplate field

我正在查看这个代码库,我试图了解它是如何工作的,或者它是否有代码味道。

@Repository
@Scope("singleton")
public abstract class BaseDao {

  @Autowired
  protected JdbcTemplate jdbc;

}
@Repository
@Scope("singleton")
public class Dao1 extends BaseDao {

}

@Repository
@Scope("singleton")
public class Dao2 extends BaseDao {

}

我的问题是,当我在 Dao1 和 Dao2 中扩展 BaseDAO 摘要 class 时会发生什么,spring 是否创建了 2 个 jdbc 模板,一个用于 Dao1 和 Dao2,或者因为BaseDAO 是 spring-singleton(我知道这不同于 Java 单例或单例设计模式),它 uses/shares 与所有 child [=] 相同的 jdbc 模板31=]es 一旦 child 创建了一个 jdbc 模板。

每次使用 @Autowired protected JdbcTemplate jdbc 或同一个模板时,spring 会创建一个新的 jdbc 模板吗?

编辑:更新了问题以删除令人困惑的 session

@JB Nizet 上面的评论是正确的答案,spring 默认情况下使用单例范围,因此它将在 类、Dao1 和 Dao2 中注入相同的 JdbcTemplate。