spring quartz 中定制一个一分钟执行一次的接口,接口方法A中调用另一个方法B,给A方法加上事务,A方法出错时,B方法回滚。现在希望A方法出错,B方法仍可继续执行,在B方法上定义传播行为Propagation.NOT_SUPPORTED,但并不起作用,求大神赐教,感谢~
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<!-- Triggers集成 -->
<property name="triggers">
<list>
<ref bean="salaryBillCronTrigger" />
</list>
</property>
</bean>
<bean id="salaryBillCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="salaryBill" />
<!-- 每分钟执行一次 -->
<property name="cronExpression" value="0 0/1 * * * ? *" />
</bean>
<bean id="salaryBill" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="salaryBillManager" />
<!-- 调用方法A:execute -->
<property name="targetMethod" value="execute" />
<property name="concurrent" value="false"></property>
</bean>
<bean id="salaryBillManager" class="com.company.ehr.service.SalaryBillManager"></bean>
package com.company.ehr.service;
@Autowired
private SalaryBillDao salaryBillDao;
@Transactional
public class SalaryBillManager {
public String execute() throws Exception {
....
salaryBillDao.saveObject();
....
}
}
@Transactional(propagation=Propagation.NOT_SUPPORTED)
public boolean saveObject(SalaryBill salaryBill) throws Exception {
// 该方法中执行数据入库操作
}
在postmen 中调用A接口,方法A出错,方法B可正常执行。
疑问:为什么将A接口放在quartz中执行时,B方法不能正常入库。