这很好用:
public class LocationManagerImpl implements LocationManager {
@Transactional
public void saveLocation(Location location) {
}
}
//config class
@Bean
public LocationManager locationManager() {
return new LocationManagerImpl();
}
而这不是:
@Service
public class LocationManagerImpl implements LocationManager {
@Transactional
public void saveLocation(Location location) {
}
}
答案 0 :(得分:3)
问题可能是您的@Transactional
带注释的类位于servlet上下文中。如果在servlet应用程序上下文配置中有<context:component-scan>
,而在根应用程序上下文中配置了Spring AOP拦截器,则可能会发生这种情况。
解决方案是将@Service
带注释的类移动到根Web应用程序应用程序上下文。
见Spring @Transactional not working。
Servlet和Web App Root上下文之间的区别: Difference between applicationContext.xml and spring-servlet.xml in Spring Framework