1. 程式人生 > >用BeanNameAutoProxyCreator自動建立事務代理

用BeanNameAutoProxyCreator自動建立事務代理

TranscationInterceptor是一個事務攔截器bean,需要傳入一個TransactionManager的引用。配置中使用Spring依賴注入該屬性,事務攔截器的事務屬性通過transactionAttributes來指定,該屬性有props子元素,配置檔案中定義了三個事務傳播規則:
所有以insert開始的方法,採用PROPAGATION_REQUIRED的事務傳播規則。程式丟擲MyException異常及其子異常時,自動回滾事務。所有以find開頭的方法,採用PROPAGATION_REQUIRED事務傳播規則,並且只讀。其他方法,則採用PROPAGATION_REQUIRED的事務傳播規則。
BeanNameAutoProxyCreator是個根據bean名生成自動代理的代理建立器,該bean通常需要接受兩個引數。第一個是beanNames屬性,該屬性用來設定哪些bean需要自動生成代理。另一個屬性是interceptorNames,該屬性則指定事務攔截器,自動建立事務代理時,系統會根據這些事務攔截器的屬性來生成對應的事務代理。
為了讓讀者對這種配置方式有資訊,對PersonDaoHibernate的save方法進行簡單 修改,修改後的save方法如下: