我有以下情况:
@Service
public class MyService {
private final MyRepository repository;
@Autowired
public MyService(MyRepository repository){
this.repository = repository;
}
public List<Data> getData(){
return repository.findAll();
}
@Transactional
public void saveData(Data data){
repository.save(data);
}
}
当我调用saveData
方法时,未应用@Transactional
批注,该方法将引发TransactionRequiredException。
如何启用@Transactional
注释?
答案 0 :(得分:0)
使用此方法,Spring由于某种原因会错误地初始化bean,并且不应用注释。
我发现的一个解决方法是使用字段自动装配而不是构造函数自动装配。像这样:
我有以下情况:
@Service
public class MyService {
@Autowired
private MyRepository repository;
public List<Data> getData(){
return repository.findAll();
}
@Transactional
public void saveData(Data data){
repository.save(data);
}
}
这样,可以正确地代理Bean,并且AOP框架可以应用必要的注释。