1. 关于@Transactional的事务回滚
- 只能在修饰public的方法中生效。
- 如果有@Transactional修饰的public方法a()调用private方法b(),实际的数据库操作在b()中,事务回滚会生效
- 事务回滚默认只是RuntimeException或其子类
- 如果自己try catch了RuntimeException,又不重新抛出的话,那样不会事务回滚
- 被自身类中没有@Transactional的方法调用
2. 关于bean的自动注入失败获得null
- 配置缺失,比如为开启注解扫描驱动、注入组件为注册
- 使用 new 关键字创建的对象不受spring容器管理,无法注入
- 注入静态变量, 静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入
3.@ExceptionHandler注解的方法出现500错误
错误代码
public Object handleError(ValidationException e) {
logger.error(e.getMessage());
res.setCode("405");
res.setMsg(e.getMessage());
res.setData(new Object();
return res;
}
正确代码
public Object handleError(ValidationException e) {
logger.error(e.getMessage());
res.setCode("405");
res.setMsg(e.getMessage());
// 修改此句
res.setData("";
return res;
}
不能返回包含Object对象的类,完全就不知所以。。