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



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

@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 抽象类时会发生什么,Spring 是否创建了 2 个 jdbc 模板,一个用于两者,Dao1 和 Dao2,或者因为 BaseDAO 是 spring-singleton(我知道这与 Java singleton 或 singleton 设计模式不同(,一旦任何子类创建了 jdbc 模板,它就会与所有子类使用/共享相同的 jdbc 模板。

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

编辑:更新了问题以删除令人困惑的会话提及。

@JB Nizet上面的评论是正确的答案,spring默认使用单例作用域,因此它会在两个类Dao1和Dao2中注入相同的JdbcTemplate。