nutz,今晚来一发(16): 类标注了@IocBean和@Inject,然后new到的对象无注入?

nutz群隔三差五就会有人问为啥XXX没有注入, 以下是对话的截图:

声明一下, 下面的截图只是为了说明问题, 无其他含义.


nutz,今晚来一发(16): 类标注了@IocBean和@Inject,然后new到的对象无注入?_第1张图片

nutz,今晚来一发(16): 类标注了@IocBean和@Inject,然后new到的对象无注入?_第2张图片

nutz,今晚来一发(16): 类标注了@IocBean和@Inject,然后new到的对象无注入?_第3张图片

有时候我会想, 一个用Spring注解标注的类, 如果new出来,难道就能注入?? 不解求解释

提问:

一个对象标注了注解,到底发生了什么事?

为啥new出来的对象没有注入??


--------------------------------------上期的分割线-------------------------

上期答案:


  1. 不一定

  2. 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%保证数据安全, 只有风险在可以接受的范围,那就是好的咯


你可能感兴趣的:(注解,nutz)