[英]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.