繁体   English   中英

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM