为什么@Scheduled批注不适用于@Transaction批注。弹簧靴
2022-09-04 23:17:23
我有一个问题:为什么当我们用和注释方法时,事务不起作用?我知道调用我的类而不是Spring创建的代理类,但无法理解这种行为。@Scheduled
@Transaction
@Scheduled
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.transaction.annotation.Transactional;
@Service
public class UserServiceImpl implements UserService {
@Override
@Scheduled(fixedRateString = "${somestring}",initialDelayString = "${anotherstring}")
@Transactional
public void doSomething() {
}
}
我有两个解决这个问题的解决方案:
从方法调用代理。
Scheduled
实现对象 (即使用我的类) 并将其替换为带有代理的对象 。
ConcurrentTaskScheduler
ScheduledMethodRunnable
ScheduledMethodRunnable
但是这种解决方案非常不方便。
你能解释一下为什么这样工作吗?@Scheduled
谢谢!