В документации Spring рекомендуемый способ использования JdbcTemplate является создание new
шаблон для каждого класса вы используете его в ...Singleton против прототипа JdbcTemplate
public class JdbcCorporateEventDao implements CorporateEventDao {
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
}
Мне было интересно, что преимущество этого решения над определить jdbctemplate
, как синглтон в контексте и непосредственно вводить его в Dao
public class JdbcCorporateEventDao implements CorporateEventDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
}
Немного поздно, но мне также любопытно. Если используется в case1, он будет генерировать экземпляры JdbcTemplate столько же, сколько DAO, правильно? но во втором случае будет только один экземпляр JdbcTemplate, так как весна управляет своим bean-компонентом как singleton по умолчанию. По этой причине, я думаю, второй способ выглядит намного лучше. Есть ли способ использовать JdbcTemplate как case 1? –
@JuneyoungOh JdbcTemplate имеет некоторые свойства, которые влияют на все запросы, выполняемые из данного экземпляра (например, 'setFetchSize (int fetchSize)', 'setQueryTimeout (int queryTimeout)' и т. Д.). Поэтому, если вы используете один из них и нуждаетесь в разных настройках для разных частей приложения - вам нужно несколько экземпляров JdbcTemplate. –
Спасибо за объяснение. Это был полезный ответ, я не думал об этих случаях. Хороший день bb –