nutz群隔三差五就会有人问为啥XXX没有注入, 以下是对话的截图:
声明一下, 下面的截图只是为了说明问题, 无其他含义.
有时候我会想, 一个用Spring注解标注的类, 如果new出来,难道就能注入?? 不解求解释
提问:
一个对象标注了注解,到底发生了什么事?
为啥new出来的对象没有注入??
--------------------------------------上期的分割线-------------------------
上期答案:
会
会
不一定
dao1会无法回滚
原因:
A. Trans里面的事务在run方法结束后(即用户代码执行完毕后)提交.
----------> 所以: run方法内抛出异常, dao1/dao2均回滚. 也就能得出第1/2题的答案
B. Trans使用的不是JTA或XADataSource. JTA或XADataSource, 会使用二阶段提交, 即prepareCommit和commit.
首先对2个数据源执行prepareCommit, 完成后, XA驱动会确保commit操作总是成功的(好吧,其实也只是理论上,鬼知道会不会网络出错,文件系统异常, 宇宙粒子打中数据点).
-----------> 所以, 会出现 dao1提交成功后, dao2提交失败. 这时候dao1已经不能回滚.
虽然这几率很小, 但它的确存在.
正如任何数据库都不能100%保证数据安全, 只有风险在可以接受的范围,那就是好的咯