属性配置
事务管理的目的
在出现异常的情况下,保证数据的一致性;数据提交操作回滚至异常发生前的状态
事务管理的方式:
Spring
(Spring Framework
提供对事务管理的抽象接口)
支持两种事务管理方式:
编程式事务管理
- 使用
TransactionTemplate
或PlatformTransactionManager
实现- 编程式事务管理优势:可以控制事务的粒度,最细粒度到代码块级别;
声明式事务管理
- 建立在
AOP
之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务(此处取决于事务的传播行为),在执行完目标方法之后根据执行情况提交或者回滚事务(执行成功则提交,失败则进行实物的回滚)- 声明式实物管理优势:在方法外进行声明,事务控制的代码不会与业务逻辑代码混在一起,最细粒度到方法级别(解决方法:可以将需要进行事务管理的代码块独立为方法,通过方法间调用实现);符合
spring
倡导的非侵入式的开发方式,即业务处理逻辑代码与事务管理代码不放在一起
注解的属性列表
属性 | 类型 | 描述 |
---|---|---|
value | string | 可选的限定描述符,指定使用的事务管理器 |
propagation | enum: Propagation | 可选的事务传播行为设置 |
isolation | enum: Isolation | 可选的事务隔离级别设置 |
readOnly | boolean | 读写或只读事务,默认读写 |
timeout | int (单位是:秒) | 事务超时时间设置 |
rollbackFor | Class[],Class对象数组,必须继承自Throwable | 导致事务回滚的异常类数组 |
rollbackForClassName | String[],类名数组,必须继承自Throwable | 导致事务回滚的异常类名字数组 |
noRollbackFor | Class[],Class对象数组,必须继承自Throwable | 不会导致事务回滚的异常类数组 |
noRollbackForClassName | String[],类名数组,必须继承自Throwable | 不会导致事务回滚的异常类名字数组 |
enum: Propagation 、Isolation 枚举参数值介绍
enum : propagation 事务传播行为
介绍:如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为
TransactionDefinition.PROPAGATION_REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是默认值。
TransactionDefinition.PROPAGATION_REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
TransactionDefinition.PROPAGATION_NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。
enum : Isolation 事务的隔离级别
介绍:是指若干个并发的事务之间的隔离程度
Isolation.READ_UNCOMMITTED:读取未提交数据(会出现脏读, 不可重复读) 基本不使用
Isolation.READ_COMMITTED:读取已提交数据(会出现不可重复读和幻读)
Isolation.REPEATABLE_READ:可重复读(会出现幻读)
Isolation.SERIALIZABLE:串行化
属性说明
value
- 主要用来指定不同的事务管理器;主要用来满足在同一个系统中,存在不同的事务管理器。比如在Spring中,声明了两种事务管理器txManager1, txManager2.然后,用户可以根据这个参数来根据需要指定特定的txManager.
- 适用场景:在一个系统中,需要访问多个数据源或者多个数据库,则必然会配置多个事务管理器的
REQUIRED_NEW和NESTED两种不同的传播机制的区别
- REQUIRED_NEW:内部的事务独立运行,在各自的作用域中,可以独立的回滚或者提交;而外部的事务将不受内部事务的回滚状态影响
- ESTED的事务,基于单一的事务来管理,提供了多个保存点。这种多个保存点的机制允许内部事务的变更触发外部事务的回滚。而外部事务在混滚之后,仍能继续进行事务处理,即使部分操作已经被混滚。 由于这个设置基于JDBC的保存点,所以只能工作在
JDBC
的机制rollbackFor
- 让受检查异常回滚;即让本来不应该回滚的进行回滚操作
noRollbackFor
- 忽略非检查异常;即让本来应该回滚的不进行回滚操作
注意事项:
@Transactional
使用位置类上方
方法上方
Spring
建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效
当作用于类上时,该类的所有public
方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。
方法的访问权限为
public
@Transactional
注解应该只被应用到public
方法上,这是由Spring AOP
的本质决定的。在protected
、private
或者默认可见性的方法上使用@Transactional
注解,这将被忽略,也不会抛出任何异常
默认情况下,只有来自外部的方法调用才会被
AOP
代理捕获,也就是,类内部方法调用本类内部的其他方法并不会引起事务行为,即使被调用方法使用@Transactional
注解进行修饰
例如一:同一个类中方法,A方法未使用此标签,B使用了,C未使用,A 调用 B , B 调用 C ;则外部调用A之后,B的事务是不会起作用的
例如二:若是有上层(按照
Controller
层、Service
层、DAO
层的顺序)由Action
调用Service
直接调用,发生异常会发生回滚;若间接调用,Action
调用Service
中 的 A 方法,A无@Transactional
注解,B有,A调用B,B的注解无效
其他
- 事务方法的嵌套调用会产生事务传播
- spring 的事务管理是线程安全的
- 父类的声明的
@Transactional
会对子类的所有方法进行事务增强;子类覆盖重写父类方式可覆盖其@Transactional
中的声明配置 - 类名上方使用
@Transactional
,类中方法可通过属性配置覆盖类上的@Transactional
配置;比如:类上配置全局是可读写,可在某个方法上改为只读 - https://wj.qq.com/s2/7013350/cf17
https://wj.qq.com/s2/7029781/07bb
https://bitbucket.org/bmbkbfjkk/workspace/projects/MA9VMKI
https://bitbucket.org/bmbkbfjkk/workspace/projects/DD2TGJ7
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZK59ZN1
https://wj.qq.com/s2/7015203/ddb7
https://bitbucket.org/DHJJJJFHHF/workspace/projects/RSQB9XZ
https://wj.qq.com/s2/7033675/b51a
https://bitbucket.org/bmbkbfjkk/workspace/projects/GEMVVGJ
https://wj.qq.com/s2/7031939/8cb8
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KMGFOUM
https://wj.qq.com/s2/7019057/d9f3
https://wj.qq.com/s2/7015717/0565
https://wj.qq.com/s2/7015509/1995
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VR5751P
https://bitbucket.org/bmbkbfjkk/workspace/projects/KUB2N38
https://wj.qq.com/s2/7031743/d62a
https://bitbucket.org/bmbkbfjkk/workspace/projects/AKRTHGY
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SY71514
https://wj.qq.com/s2/7011414/7250
https://bitbucket.org/DHJJJJFHHF/workspace/projects/BDBVIDA
https://wj.qq.com/s/7011164/ef15/
https://bitbucket.org/DHJJJJFHHF/workspace/projects/AX4BWJ9
https://bitbucket.org/bmbkbfjkk/workspace/projects/UIAYOBT
https://bitbucket.org/bmbkbfjkk/workspace/projects/MGJ8S12
https://bitbucket.org/DHJJJJFHHF/workspace/projects/UHJWXXI
https://wj.qq.com/s2/7018171/aa6c
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YNGDPUR
https://bitbucket.org/bmbkbfjkk/workspace/projects/ED4U151
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JM47466
https://wj.qq.com/s2/7033367/e1c3
https://bitbucket.org/DHJJJJFHHF/workspace/projects/XDPV1U1
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TA041LY
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WYZ18SW
https://bitbucket.org/bmbkbfjkk/workspace/projects/EGMX78C
https://wj.qq.com/s2/7014816/84f2
https://bitbucket.org/bmbkbfjkk/workspace/projects/DTR1TNT
https://bitbucket.org/bmbkbfjkk/workspace/projects/BLGSVYW
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TUS5Z3J
https://bitbucket.org/bmbkbfjkk/workspace/projects/OUSPU3V
https://wj.qq.com/s2/7031758/6a2a
https://bitbucket.org/bmbkbfjkk/workspace/projects/KZRB058
https://bitbucket.org/bmbkbfjkk/workspace/projects/RGKPRBP
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ZCCWAOY
https://wj.qq.com/s2/7016048/0e2a
https://bitbucket.org/DHJJJJFHHF/workspace/projects/IH356JQ
https://bitbucket.org/bmbkbfjkk/workspace/projects/FEICNLS
https://bitbucket.org/DHJJJJFHHF/workspace/projects/IE35IZH
https://wj.qq.com/s2/7030645/a5de
https://wj.qq.com/s2/7011537/a647
https://wj.qq.com/s2/7015915/a2d5
https://wj.qq.com/s2/7029698/846c
https://wj.qq.com/s2/7015128/172a
https://bitbucket.org/DHJJJJFHHF/workspace/projects/BTP7LD5
https://wj.qq.com/s2/7029740/e9b4
https://wj.qq.com/s2/7011773/4a1c
https://wj.qq.com/s2/7029689/1e02
https://wj.qq.com/s2/7030751/4969
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZLCSJWS
https://bitbucket.org/DHJJJJFHHF/workspace/projects/CW2G733
https://bitbucket.org/bmbkbfjkk/workspace/projects/XXODY6B
https://bitbucket.org/bmbkbfjkk/workspace/projects/EVXODGJ
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KHN5J33
https://wj.qq.com/s2/7015716/b79c
https://wj.qq.com/s2/7030975/3829
https://wj.qq.com/s2/7030539/98b0
https://bitbucket.org/bmbkbfjkk/workspace/projects/FK5JEHW
https://bitbucket.org/bmbkbfjkk/workspace/projects/KT5OLAZ
https://wj.qq.com/s2/7015092/7ae1
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FX6ZJJV
https://wj.qq.com/s2/7029452/19a3
https://bitbucket.org/bmbkbfjkk/workspace/projects/TUP0201
https://bitbucket.org/DHJJJJFHHF/workspace/projects/PVAUQRE
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZHAG4HA
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LR7H26N
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SX4RLJY
https://bitbucket.org/bmbkbfjkk/workspace/projects/BRCDJTG
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TU7G3KO
https://bitbucket.org/bmbkbfjkk/workspace/projects/KXCZZHJ
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FRHYQP8
https://wj.qq.com/s2/7012748/104a
https://wj.qq.com/s2/7011385/58bb
https://wj.qq.com/s2/7015986/d540
https://wj.qq.com/s2/7015392/2568
https://bitbucket.org/DHJJJJFHHF/workspace/projects/OJ7NBJ6
https://bitbucket.org/DHJJJJFHHF/workspace/projects/NKV199K
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TDN05YY
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ZMWBEF6
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LWW367Q
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TP2H5VK
https://wj.qq.com/s2/7030428/35b3
https://wj.qq.com/s2/7014929/3a89
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TC9HLTE
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JBZLVND
https://wj.qq.com/s2/7017021/abc2
https://wj.qq.com/s2/7029422/3d5e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/MW7G9E8
https://wj.qq.com/s2/7030545/5982
https://bitbucket.org/bmbkbfjkk/workspace/projects/ONOLXCQ
https://bitbucket.org/DHJJJJFHHF/workspace/projects/DH20H6Y
https://wj.qq.com/s2/7014673/f753
https://bitbucket.org/bmbkbfjkk/workspace/projects/APW89M8
https://wj.qq.com/s2/7031822/d1df
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZSNQWPP
https://wj.qq.com/s2/7032545/2502
https://wj.qq.com/s2/7016082/b786
https://wj.qq.com/s2/7033899/1a5e
https://wj.qq.com/s2/7031210/b6ae
https://bitbucket.org/bmbkbfjkk/workspace/projects/MUNCDGK
https://bitbucket.org/bmbkbfjkk/workspace/projects/XN1R33W
https://wj.qq.com/s2/7015816/bdf1
https://wj.qq.com/s2/7012033/8388
https://wj.qq.com/s2/7015894/1157
https://wj.qq.com/s2/7031808/5acb
https://wj.qq.com/s2/7012255/9a4a
https://wj.qq.com/s2/7030432/eb89
https://wj.qq.com/s2/7031821/f51e
https://wj.qq.com/s2/7031744/d1ec
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KG844AS
https://wj.qq.com/s2/7015749/f15e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/QZE5GM9
https://wj.qq.com/s2/7012620/4a29
https://wj.qq.com/s2/7016682/2602
https://bitbucket.org/bmbkbfjkk/workspace/projects/HMYFOKS
https://bitbucket.org/bmbkbfjkk/workspace/projects/TK9745B
https://bitbucket.org/bmbkbfjkk/workspace/projects/TR58K9W
https://bitbucket.org/bmbkbfjkk/workspace/projects/GN8N3K5
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WEHXT58
https://bitbucket.org/DHJJJJFHHF/workspace/projects/BA5RL29
https://wj.qq.com/s2/7030420/6b49
https://bitbucket.org/bmbkbfjkk/workspace/projects/KWFEDXP
https://bitbucket.org/bmbkbfjkk/workspace/projects/AEU2GMZ
https://wj.qq.com/s2/7012240/c8a0
https://wj.qq.com/s2/7017485/3683
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HETNNAM
https://wj.qq.com/s2/7015388/ee9f
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LSV908Q
https://wj.qq.com/s2/7015748/b32c
https://wj.qq.com/s2/7030221/7a26
https://bitbucket.org/bmbkbfjkk/workspace/projects/DBPEOQG
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SR5MRJF
https://wj.qq.com/s2/7029474/c4d8
https://bitbucket.org/bmbkbfjkk/workspace/projects/FHOREBK
https://bitbucket.org/DHJJJJFHHF/workspace/projects/PZ59Q33
https://wj.qq.com/s2/7029486/3239
https://bitbucket.org/bmbkbfjkk/workspace/projects/NOEWZF0
https://wj.qq.com/s2/7029952/e187
https://bitbucket.org/DHJJJJFHHF/workspace/projects/NS98MNV
https://wj.qq.com/s2/7030240/62ef
https://bitbucket.org/DHJJJJFHHF/workspace/projects/NGZ6DH5
https://wj.qq.com/s2/7018681/985d
https://wj.qq.com/s2/7015566/a8e9
https://bitbucket.org/DHJJJJFHHF/workspace/projects/CXNANUM
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VP61Z59
https://bitbucket.org/DHJJJJFHHF/workspace/projects/MYTNPN4
https://wj.qq.com/s2/7032712/6516
https://wj.qq.com/s2/7032608/12e8
https://wj.qq.com/s2/7015332/5b6d
https://wj.qq.com/s2/7032242/a718
https://wj.qq.com/s2/7014583/59a6
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SDHKX6O
https://bitbucket.org/bmbkbfjkk/workspace/projects/DT070O3
https://wj.qq.com/s2/7018319/c48e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KQQ8MZ8
https://bitbucket.org/bmbkbfjkk/workspace/projects/UEC6YZ6
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WXFDUKR
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VIVM560
https://wj.qq.com/s2/7033197/6d30
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SL8G8Y1
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FBPLZNB
https://bitbucket.org/bmbkbfjkk/workspace/projects/NB7P086
https://wj.qq.com/s2/7015175/aecc
https://bitbucket.org/DHJJJJFHHF/workspace/projects/OLKNWIU
https://bitbucket.org/bmbkbfjkk/workspace/projects/QX2D5L6
https://wj.qq.com/s2/7016293/92e6
https://wj.qq.com/s2/7018001/2ced
https://wj.qq.com/s2/7014770/9ffb
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YI829DB
https://bitbucket.org/bmbkbfjkk/workspace/projects/IV8JEA3
https://wj.qq.com/s2/7030192/4aff
https://wj.qq.com/s/7011924/bcd9/
https://bitbucket.org/bmbkbfjkk/workspace/projects/HBI02P3
https://wj.qq.com/s2/7012073/bce4
https://wj.qq.com/s2/7018176/6c0b
https://wj.qq.com/s2/7013866/6c85
https://wj.qq.com/s2/7032631/154d
https://bitbucket.org/bmbkbfjkk/workspace/projects/FS016J5
https://bitbucket.org/bmbkbfjkk/workspace/projects/GN72JAW
https://bitbucket.org/bmbkbfjkk/workspace/projects/HS3GVD6
https://wj.qq.com/s2/7031583/8da4
https://bitbucket.org/bmbkbfjkk/workspace/projects/BQVP31K
https://wj.qq.com/s2/7013274/4096
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WW2GLLH
https://wj.qq.com/s2/7012038/15f6
https://bitbucket.org/bmbkbfjkk/workspace/projects/GDK9ZYL
https://wj.qq.com/s2/7032730/06c8
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LNISKBY
https://bitbucket.org/bmbkbfjkk/workspace/projects/CKFDZAM
https://wj.qq.com/s2/7032364/b33a
https://wj.qq.com/s2/7013377/4fcd
https://wj.qq.com/s2/7013544/0acd
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HSGBLQC
https://wj.qq.com/s2/7012141/a4b9
https://wj.qq.com/s2/7033767/0220
https://wj.qq.com/s2/7029930/f171
https://wj.qq.com/s2/7031218/c9e0
https://bitbucket.org/bmbkbfjkk/workspace/projects/LG7TTLZ
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LDSAMOU
https://bitbucket.org/bmbkbfjkk/workspace/projects/IH36B49
https://wj.qq.com/s2/7015043/44ab
https://wj.qq.com/s2/7013328/bd04
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LHQ6ESB
https://bitbucket.org/DHJJJJFHHF/workspace/projects/QL5C8O4
https://wj.qq.com/s2/7031337/2c37
https://bitbucket.org/bmbkbfjkk/workspace/projects/EVHXMQ3
https://wj.qq.com/s2/7030145/26a3
https://wj.qq.com/s2/7016437/16d4
https://wj.qq.com/s2/7030941/8a36
https://wj.qq.com/s2/7013444/3f58
https://bitbucket.org/bmbkbfjkk/workspace/projects/KS5Y041
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ESZKBLD
https://wj.qq.com/s2/7015743/91a3
https://bitbucket.org/DHJJJJFHHF/workspace/projects/LM39N0J
https://bitbucket.org/bmbkbfjkk/workspace/projects/CQ36Z16
https://bitbucket.org/DHJJJJFHHF/workspace/projects/BVJH95Y
https://bitbucket.org/bmbkbfjkk/workspace/projects/TM0GLK8
https://bitbucket.org/bmbkbfjkk/workspace/projects/CN7X561
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HQFW1R6
https://bitbucket.org/bmbkbfjkk/workspace/projects/CT575I0
https://bitbucket.org/bmbkbfjkk/workspace/projects/URH5EAY
https://bitbucket.org/bmbkbfjkk/workspace/projects/YC44628
https://bitbucket.org/DHJJJJFHHF/workspace/projects/OFI9Y8C
https://wj.qq.com/s2/7033128/86ad
https://bitbucket.org/bmbkbfjkk/workspace/projects/TWLWRNE
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ORFONYG
https://wj.qq.com/s2/7015866/38f8
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SVT6QRQ
https://wj.qq.com/s2/7015695/206c
https://bitbucket.org/bmbkbfjkk/workspace/projects/NZZQLWK
https://wj.qq.com/s2/7033723/3a6b
https://bitbucket.org/bmbkbfjkk/workspace/projects/YAQERA1
https://wj.qq.com/s2/7015402/3321
https://bitbucket.org/bmbkbfjkk/workspace/projects/VI024L9
https://wj.qq.com/s2/7013922/bddb
https://bitbucket.org/bmbkbfjkk/workspace/projects/RGKENSE
https://bitbucket.org/DHJJJJFHHF/workspace/projects/AO97654
https://wj.qq.com/s2/7029777/33b7
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TFHR7DD
https://bitbucket.org/DHJJJJFHHF/workspace/projects/UOVE3NX
https://bitbucket.org/DHJJJJFHHF/workspace/projects/PQA7FD8
https://wj.qq.com/s2/7014069/a0c1
https://wj.qq.com/s2/7013330/5aab
https://wj.qq.com/s2/7030626/c059
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KCB8MAG
https://wj.qq.com/s2/7029479/5ba0
https://bitbucket.org/bmbkbfjkk/workspace/projects/GNEYN9D
https://bitbucket.org/DHJJJJFHHF/workspace/projects/RRM92TL
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FIG7ZRE
https://bitbucket.org/bmbkbfjkk/workspace/projects/NTLRFEX
https://wj.qq.com/s2/7030361/976f
https://bitbucket.org/bmbkbfjkk/workspace/projects/RHTCUDW
https://wj.qq.com/s2/7031947/95a5
https://wj.qq.com/s2/7029491/7d9e
https://wj.qq.com/s2/7015686/0fc3
https://wj.qq.com/s2/7012416/f88e
https://wj.qq.com/s2/7033642/4c5f
https://wj.qq.com/s2/7017093/f267
https://wj.qq.com/s2/7033687/9fb0
https://wj.qq.com/s2/7016349/eec9
https://wj.qq.com/s2/7012105/0c3b
https://bitbucket.org/bmbkbfjkk/workspace/projects/CL57V29
https://bitbucket.org/bmbkbfjkk/workspace/projects/QYPIULE
https://wj.qq.com/s2/7031889/b00d
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JKK25V2
https://wj.qq.com/s2/7017821/6905
https://bitbucket.org/bmbkbfjkk/workspace/projects/MJ6ZSTS
https://bitbucket.org/DHJJJJFHHF/workspace/projects/MDE7QLS
https://wj.qq.com/s2/7030555/6671
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WW9194A
https://wj.qq.com/s2/7032206/b59d
https://wj.qq.com/s2/7012661/9c44
https://bitbucket.org/bmbkbfjkk/workspace/projects/SBY8QW1
https://bitbucket.org/bmbkbfjkk/workspace/projects/YJSMWOJ
https://bitbucket.org/bmbkbfjkk/workspace/projects/RPJ59NB
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SRWPGKR
https://bitbucket.org/bmbkbfjkk/workspace/projects/YCNXUSX
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JAS5EH5
https://bitbucket.org/bmbkbfjkk/workspace/projects/MKCBZRR
https://wj.qq.com/s2/7031824/fbaa
https://wj.qq.com/s2/7016050/c284
https://wj.qq.com/s/7011781/d8f1/
https://wj.qq.com/s2/7013139/4996
https://wj.qq.com/s2/7032926/a27d
https://wj.qq.com/s2/7030274/fd1a
https://wj.qq.com/s2/7032335/2a0b
https://wj.qq.com/s/7011760/7df6/
https://wj.qq.com/s2/7031399/355c
https://bitbucket.org/DHJJJJFHHF/workspace/projects/GL7I79C
https://bitbucket.org/bmbkbfjkk/workspace/projects/GVX8GZ7
https://bitbucket.org/bmbkbfjkk/workspace/projects/BPL6O6D
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VYVL220
https://wj.qq.com/s2/7015205/4e4e
https://wj.qq.com/s2/7011846/763f
https://bitbucket.org/DHJJJJFHHF/workspace/projects/NHPZVTJ
https://wj.qq.com/s2/7015791/bef0
https://bitbucket.org/bmbkbfjkk/workspace/projects/TZ2O0D5
https://wj.qq.com/s2/7013547/9575
https://wj.qq.com/s/7011908/08d7/
https://wj.qq.com/s2/7015422/c7ea
https://bitbucket.org/bmbkbfjkk/workspace/projects/SNKCA67
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KR2RR6F
https://bitbucket.org/bmbkbfjkk/workspace/projects/LS6ZTVV
https://wj.qq.com/s2/7011586/503a
https://wj.qq.com/s2/7029822/5477
https://wj.qq.com/s2/7031648/8804
https://bitbucket.org/bmbkbfjkk/workspace/projects/WXVARZK
https://bitbucket.org/bmbkbfjkk/workspace/projects/NP1YOL3
https://bitbucket.org/bmbkbfjkk/workspace/projects/DFPZTLJ
https://wj.qq.com/s2/7032625/2204
https://wj.qq.com/s2/7029977/f910
https://wj.qq.com/s2/7017941/ae4a
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YN82309
https://wj.qq.com/s2/7013299/7803
https://wj.qq.com/s2/7012723/77a0
https://bitbucket.org/DHJJJJFHHF/workspace/projects/USMKVHA
https://bitbucket.org/bmbkbfjkk/workspace/projects/HS041WW
https://bitbucket.org/DHJJJJFHHF/workspace/projects/CLREFQ5
https://bitbucket.org/bmbkbfjkk/workspace/projects/LU74K5X
https://wj.qq.com/s2/7016443/887d
https://wj.qq.com/s2/7029745/2b66
https://bitbucket.org/DHJJJJFHHF/workspace/projects/OMUXPCA
https://wj.qq.com/s2/7030393/4bc9
https://wj.qq.com/s2/7012571/836e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VDMMDVS
https://bitbucket.org/bmbkbfjkk/workspace/projects/JDXQB55
https://bitbucket.org/bmbkbfjkk/workspace/projects/GX09AV1
https://bitbucket.org/bmbkbfjkk/workspace/projects/AUK3RL4
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FNVWQ1S
https://wj.qq.com/s2/7015098/7608
https://bitbucket.org/bmbkbfjkk/workspace/projects/EM55B30
https://wj.qq.com/s2/7014473/b824
https://bitbucket.org/bmbkbfjkk/workspace/projects/NX5EJ7O
https://bitbucket.org/DHJJJJFHHF/workspace/projects/XUH3NU2
https://wj.qq.com/s2/7029521/efeb
https://wj.qq.com/s2/7016787/25b4
https://bitbucket.org/bmbkbfjkk/workspace/projects/FJ57ZZP
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZLZ79AP
https://bitbucket.org/bmbkbfjkk/workspace/projects/FBU92Y5
https://bitbucket.org/bmbkbfjkk/workspace/projects/XULMTKL
https://wj.qq.com/s2/7013770/3d96
https://bitbucket.org/bmbkbfjkk/workspace/projects/NHUTBBW
https://wj.qq.com/s2/7029918/4a49
https://wj.qq.com/s2/7033336/5372
https://bitbucket.org/bmbkbfjkk/workspace/projects/AZYL43P
https://wj.qq.com/s2/7015832/3406
https://bitbucket.org/bmbkbfjkk/workspace/projects/YN62JZ0
https://wj.qq.com/s2/7016962/3b44
https://bitbucket.org/bmbkbfjkk/workspace/projects/NAT80E9
https://wj.qq.com/s2/7015859/34e4
https://wj.qq.com/s2/7015592/a9ec
https://bitbucket.org/bmbkbfjkk/workspace/projects/AKKN0AQ
https://bitbucket.org/bmbkbfjkk/workspace/projects/FGBJGBG
https://wj.qq.com/s2/7015624/5d30
https://wj.qq.com/s2/7031848/1af8
https://bitbucket.org/DHJJJJFHHF/workspace/projects/TCL6HN0
https://bitbucket.org/bmbkbfjkk/workspace/projects/UOY80C6
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WTYAYYE
https://wj.qq.com/s2/7031486/6433
https://bitbucket.org/bmbkbfjkk/workspace/projects/NJZZWTS
https://bitbucket.org/bmbkbfjkk/workspace/projects/MKKGWWK
https://wj.qq.com/s2/7032433/d57b
https://wj.qq.com/s2/7014871/91bb
https://bitbucket.org/bmbkbfjkk/workspace/projects/HC71764
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KG66P2F
https://bitbucket.org/bmbkbfjkk/workspace/projects/DBFNQVX
https://wj.qq.com/s2/7031716/5f1c
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JJO7X6O
https://wj.qq.com/s/7011509/d5f4/
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZNGTKNG
https://wj.qq.com/s2/7031790/1b35
https://bitbucket.org/bmbkbfjkk/workspace/projects/IV5VOH8
https://bitbucket.org/bmbkbfjkk/workspace/projects/IITMHWV
https://wj.qq.com/s2/7030297/1ada
https://wj.qq.com/s2/7030577/a07e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FB807A2
https://wj.qq.com/s2/7032439/a3c1
https://wj.qq.com/s2/7014066/4287
https://bitbucket.org/bmbkbfjkk/workspace/projects/GF8Z75U
https://wj.qq.com/s2/7015892/3bc8
https://wj.qq.com/s2/7033412/e807
https://bitbucket.org/DHJJJJFHHF/workspace/projects/RNMLIUM
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HLMWCYX
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ZLIEWXP
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VKD0S91
https://wj.qq.com/s/7011993/e9aa/
https://bitbucket.org/bmbkbfjkk/workspace/projects/HUD893L
https://bitbucket.org/bmbkbfjkk/workspace/projects/GXX0I1Q
https://bitbucket.org/bmbkbfjkk/workspace/projects/QL9EVLK
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YRGL75N
https://wj.qq.com/s/7011965/990c/
https://wj.qq.com/s2/7014472/d89c
https://bitbucket.org/DHJJJJFHHF/workspace/projects/VCNW2F6
https://bitbucket.org/bmbkbfjkk/workspace/projects/VN5X50F
https://bitbucket.org/bmbkbfjkk/workspace/projects/XEM928X
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YURNBRV
https://bitbucket.org/bmbkbfjkk/workspace/projects/ODG94XW
https://wj.qq.com/s2/7017270/4113
https://wj.qq.com/s2/7031093/a475
https://wj.qq.com/s2/7013322/8b7e
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HPF7C5E
https://bitbucket.org/bmbkbfjkk/workspace/projects/DA4IS6Q
https://bitbucket.org/bmbkbfjkk/workspace/projects/JZYVQWJ
https://bitbucket.org/bmbkbfjkk/workspace/projects/MJDDOEG
https://wj.qq.com/s2/7015131/69f6
https://bitbucket.org/bmbkbfjkk/workspace/projects/REY48G7
https://bitbucket.org/DHJJJJFHHF/workspace/projects/QZX9J4V
https://wj.qq.com/s2/7029616/cbbc
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SA1S7E6
https://wj.qq.com/s2/7031289/6f99
https://wj.qq.com/s2/7031970/de8c
https://wj.qq.com/s2/7013772/7ccf
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KHK23CG
https://wj.qq.com/s2/7032584/026c
https://bitbucket.org/bmbkbfjkk/workspace/projects/IGU9FAD
https://wj.qq.com/s2/7012017/f57d
https://wj.qq.com/s2/7015732/1eb2
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YGUUAYK
https://wj.qq.com/s2/7032435/c81d
https://bitbucket.org/bmbkbfjkk/workspace/projects/IZD11RH
https://wj.qq.com/s2/7015190/d033
https://wj.qq.com/s2/7030560/45c3
https://bitbucket.org/bmbkbfjkk/workspace/projects/GW1UNWP
https://wj.qq.com/s2/7013514/0192
https://wj.qq.com/s2/7015926/58b1
https://wj.qq.com/s2/7033070/8118
https://wj.qq.com/s2/7032160/e0b8
https://wj.qq.com/s2/7017338/134d
https://wj.qq.com/s2/7030709/e949
https://wj.qq.com/s2/7012462/02ed
https://wj.qq.com/s2/7013250/ba93
https://bitbucket.org/DHJJJJFHHF/workspace/projects/PUTRUQF
https://bitbucket.org/bmbkbfjkk/workspace/projects/YT46AF5
https://wj.qq.com/s2/7032898/8273
https://bitbucket.org/bmbkbfjkk/workspace/projects/EOOO098
https://bitbucket.org/DHJJJJFHHF/workspace/projects/KBM4X94
https://bitbucket.org/bmbkbfjkk/workspace/projects/ALOOKO8
https://bitbucket.org/bmbkbfjkk/workspace/projects/UD884M1
https://bitbucket.org/bmbkbfjkk/workspace/projects/CTENY7A
https://wj.qq.com/s2/7030296/7249
https://wj.qq.com/s2/7031478/3aad
https://wj.qq.com/s2/7029440/53ae
https://wj.qq.com/s2/7012429/0473
https://bitbucket.org/bmbkbfjkk/workspace/projects/TE91LL0
https://wj.qq.com/s2/7014237/0454
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZJK1D7B
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FHSQKS5
https://wj.qq.com/s2/7030354/9ad5
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZP640XV
https://wj.qq.com/s2/7032101/4ba2
https://bitbucket.org/bmbkbfjkk/workspace/projects/EMO430L
https://wj.qq.com/s2/7015283/785b
https://bitbucket.org/bmbkbfjkk/workspace/projects/POFYAVM
https://bitbucket.org/bmbkbfjkk/workspace/projects/WOQ6JME
https://wj.qq.com/s2/7017956/9a18
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SQVRA65
https://bitbucket.org/DHJJJJFHHF/workspace/projects/CW3U00E
https://wj.qq.com/s2/7033396/a508
https://wj.qq.com/s2/7013979/6958
https://bitbucket.org/DHJJJJFHHF/workspace/projects/FIY4XYH
https://wj.qq.com/s2/7015852/e61c
https://bitbucket.org/bmbkbfjkk/workspace/projects/DMHNR9S
https://wj.qq.com/s2/7017428/b0f3
https://bitbucket.org/DHJJJJFHHF/workspace/projects/JJL94O0
https://bitbucket.org/DHJJJJFHHF/workspace/projects/SW8D7Q9
https://wj.qq.com/s2/7016192/3f19
https://wj.qq.com/s2/7031525/4617
https://bitbucket.org/DHJJJJFHHF/workspace/projects/YWV63DN
https://bitbucket.org/DHJJJJFHHF/workspace/projects/UD3WO0F
https://wj.qq.com/s2/7030842/417d
https://bitbucket.org/bmbkbfjkk/workspace/projects/ZNC0655
https://bitbucket.org/DHJJJJFHHF/workspace/projects/WK4FCHT
https://wj.qq.com/s2/7015369/1153
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ZX12406
https://bitbucket.org/DHJJJJFHHF/workspace/projects/ZQTJX5V
https://bitbucket.org/DHJJJJFHHF/workspace/projects/UA46404
https://bitbucket.org/bmbkbfjkk/workspace/projects/DO578MM
https://bitbucket.org/bmbkbfjkk/workspace/projects/GJNACJB
https://wj.qq.com/s2/7033030/65f7
https://wj.qq.com/s2/7031645/5da5
https://bitbucket.org/DHJJJJFHHF/workspace/projects/HZ62552