用JdbcTemplate字段扩展java spring singleton抽象类

问题描述 投票:0回答:1

我正在查看此代码库,并且试图了解它的工作方式或是否有代码气味。

@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或相同的代码时,spring都会创建一个新的jdbctemplate吗?

编辑:更新了问题,以消除对会话的混淆提及。

java spring oop abstract-class jdbctemplate
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.