我应该在哪种情况下使用DataSource的destroy方法?
问题描述:
我知道使用destroy-method来要求spring调用一个特定的方法来清理。 Source。我在我的代码中使用Spring Transaction Manager。我想知道如果使用这个属性是有用的。如果是的话,我该如何使用它?如果不是什么时候有用?我应该在哪种情况下使用DataSource的destroy方法?
我知道Spring自动调用该方法,但是何时应该使用该方法?哪些部分不是由Spring处理的,我需要这种方法?
dataSource属性
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
...
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
服务
@Service
public MyServiceImpl implements MyService{
@Transactional
public void saveData(MyData data){
...
}
@Transactional(readOnly = true)
public List<MyData) readData(long id){
...
}
}
库
@Repository
public MyReposImpl implements MyRepos{
@Autowired
SessionFactory sessionFactory;
public void saveData(MyData data) throws HibernateException{
sessionFactory.getCurrentSession().save(data);
}
public List<MyData> readData(long id) throws HibernateException{
...
}
答
您不叫destroy
。您告诉Spring方法的名称,因此它可以在bean不再使用时调用该方法,即需要销毁该方法。对于单例,当Spring容器停止时会发生这种情况。
我知道它会自动调用它,但是什么时候应该使用它?哪些部分不是用Spring处理的,我需要这种方法?你能给我一个例子吗? –
每当你有一个需要清理资源的bean时。 – Andreas