-
工作中的一些小总结(2)
继续总结
-
VUE数据修改后,页面或者样式未生效
主要是因为数据层次过深,没有触发render函数进行自动更新,需手动调用
this.$forceUpdate();
-
@Transactional 注解,当方法出现异常时未生效
有几种情况会出现事务未生效的状况-
方法上使用了 @Transactional 注解,在方法中捕获了异常,没有抛出。例如方法B出现异常时,方法A依然会插入入库
@Transactional
public void insert(){
try {
TestPO testPO = new TestPO();
testPO.setName("测试1");
//方法A demoMapper.insert(testPO);
//方法B testService.batchInsert();
} catch (Exception e) {
e.printStackTrace();
}
}
-
controller调用service层方法A时,方法A上未加@Transactional 注解,方法A调用了 加了@Transactional 注解的方法B
controller层
`public void insert(){
service.methodA();}`
service层
public void methodA(){
methodB();
}
@Transactional public void methodB(){ mapper.insert(); }
这种情况注解也不会生效,原因主要是因为在SpringIoC容器中返回的对象是代理对象而不是真实的对象
只有被动态代理的对象在调用时才会产生事务。
这里的methodB()就等于this.methodB()调用的是真实的对象,不是Spring管理的代理对象。
若还是想通过methodA() 调用 methodB() 可以使用
public void methodA(){
((当前类名)AopContext.currentProxy()).methodB()
}
-