2015-09-28 221 views
1

我知道使用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{ 
    ... 
} 

回答

0

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

+0

我知道它会自动调用它,但是什么时候应该使用它?哪些部分不是用Spring处理的,我需要这种方法?你能给我一个例子吗? –

+0

每当你有一个需要清理资源的bean时。 – Andreas

相关问题