@Có thể rỗng
được bảo vệ
Đối tượng invokeWithinTransaction(Phương thức phương thức,
@Có thể rỗng
Class> targetClass, TransactionAspectSupport.InvocationCallback gọi lại)
ném
Có thể ném {
TransactionAttributeSource tas =
cái này
.getTransactionAttributeSource();
Thuộc tính giao dịch txAttr = tas !=
vô giá trị
? tas.getTransactionAttribute(phương thức, lớp mục tiêu):
vô giá trị
;
PlatformTransactionManager tm =
cái này
.determineTransactionManager(txAttr);
Chuỗi joinpointIdentification =
cái này
.methodIdentification(phương thức, targetClass, txAttr);
Kết quả đối tượng;
nếu như
(txAttr !=
vô giá trị
&& tm
trường hợp của
Gọi lạiƯa thíchNền tảngGiao dịchQuản lý) {
TransactionAspectSupport.ThrowableHolder throwableHolder =
mới
Giao dịchAspectSupport.ThrowableHolder(
vô giá trị
);
thử
{
kết quả = ((CallbackPreferringPlatformTransactionManager)tm).execute(txAttr, (trạng thái) -> {
TransactionAspectSupport.TransactionInfo txInfo =
cái này
.prepareTransactionInfo(tm, txAttr, joinpointIdentification, trạng thái);
Đối tượng var9;
thử
{
Đối tượng var8 = invocation.proceedWithInvocation();
trở lại
biến8;
}
nắm lấy
(Có thể ném var13) {
nếu như
(txAttr.rollbackOn(var13)) {
nếu như
(biến thể13
trường hợp của
Ngoại lệ thời gian chạy) {
ném
(RuntimeException)var13;
}
ném
mới
TransactionAspectSupport.ThrowableHolderException(var13);
}
throwableHolder.throwable = var13;
biến9 =
vô giá trị
;
}
Cuối cùng
{
cái này
.cleanupTransactionInfo(txInfo);
}
trở lại
biến9;
});
nếu như
(throwableHolder.throwable !=
vô giá trị
) {
ném
throwableHolder.throwable;
}
khác
{
trở lại
kết quả;
}
}
nắm lấy
(TransactionAspectSupport.ThrowableHolderException var19) {
ném
var19.getCause();
}
nắm lấy
(TransactionSystemException var20) {
nếu như
(throwableHolder.throwable !=
vô giá trị
) {
cái này
.logger.lỗi(
"Ngoại lệ ứng dụng bị ghi đè bởi ngoại lệ cam kết"
, throwableHolder.throwable);
var20.initApplicationException(throwableHolder.throwable);
}
ném
biến20;
}
nắm lấy
(Có thể ném var21) {
nếu như
(throwableHolder.throwable !=
vô giá trị
) {
cái này
.logger.lỗi(
"Ngoại lệ ứng dụng bị ghi đè bởi ngoại lệ cam kết"
, throwableHolder.throwable);
}
ném
biến21;
}
}
khác
{
TransactionAspectSupport.TransactionInfo txInfo =
cái này
.createTransactionIfNecessary(tm, txAttr, joinpointIdentification);
kết quả =
vô giá trị
;
thử
{
kết quả = invocation.proceedWithInvocation();
}
nắm lấy
(Có thể ném var17) {
cái này
.completeTransactionAfterThrowing(txInfo, var17);
ném
biến17;
}
Cuối cùng
{
cái này
.cleanupTransactionInfo(txInfo);
}
cái này
.commitTransactionAfterReturning(txInfo);
trở lại
kết quả;
}
}
Tôi là một lập trình viên xuất sắc, rất giỏi!