8,906
社区成员
发帖
与我相关
我的任务
分享
<!-- Bean代理事务 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Dao</value>
<value>*Service</value>
<value>*ServiceImpl</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<!-- 配置事务属性 -->
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop><!-- 支持现在的事务,如果没有就建立一个新的事务 -->
<prop key="requiresNew*">PROPAGATION_REQUIRES_NEW</prop><!-- 建立一个新的事务,如果现存一个事务就暂停它 -->
</props>
</property>
</bean>
@Service("paymentExtWebService")
public class PaymentExtWebService extends AbstractService {
...
public void savePayMentBillCode(final List<PaymentExt> paymentExtList) throws ServiceException {
try {
for(PaymentExt paymentExt:paymentExtList) {
paymentExt.setDataStatus(BusinessConstant.ExternalDataStatus.SAVE);
paymentExtDao.save(paymentExt);
}
//创建另一个线程去执行复杂的保存操作。
new Thread(new Runnable() {
public void run() {
try {
for (PaymentExt paymentExt : paymentExtList) {
paymentDataService.outerSetlBizType(paymentExt,null);
}
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
throw new ServiceException("多线程-保存报文信息异常!" + e.getMessage());
}
}
}).start();
} catch (Exception e) {
e.printStackTrace();
logger.info(e.getMessage());
throw new ServiceException("保存报文信息异常!" + e.getMessage());
}
}
...
}