2015-09-28 218 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

相關問題