在哪些情况下我应该使用DataSource的destroy-method?

时间:2015-09-28 06:43:19

标签: java spring hibernate spring-transactions

我知道destroy-method用来让spring调用一个特定的方法来清理。 Source。我在我的代码中使用Spring Transaction Manager。我想知道使用这个属性是否有用。如果是,我该如何使用它?如果不是什么时候有用呢?

我知道Spring会自动调用该方法,但什么时候应该使用它? Spring不会处理哪些部分我需要这样的方法?

数据源属性

<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{
   ...
}

1 个答案:

答案 0 :(得分:0)

不致电destroy。您告诉Spring该方法的名称,因此 it 可以在不再使用bean时调用该方法,即需要销毁该方法。对于单例,当Spring容器停止时会发生这种情况。