15
15
*/
16
16
package org .springframework .batch .core .launch .support ;
17
17
18
- import java .util . Properties ;
18
+ import java .lang . reflect . Method ;
19
19
20
20
import io .micrometer .core .instrument .MeterRegistry ;
21
21
import io .micrometer .core .instrument .Metrics ;
25
25
import org .springframework .batch .core .configuration .JobRegistry ;
26
26
import org .springframework .batch .core .converter .DefaultJobParametersConverter ;
27
27
import org .springframework .batch .core .converter .JobParametersConverter ;
28
+ import org .springframework .batch .core .job .JobExecution ;
28
29
import org .springframework .batch .core .launch .JobOperator ;
29
30
import org .springframework .batch .core .repository .JobRepository ;
30
31
import org .springframework .beans .factory .FactoryBean ;
33
34
import org .springframework .core .task .TaskExecutor ;
34
35
import org .springframework .transaction .PlatformTransactionManager ;
35
36
import org .springframework .transaction .TransactionManager ;
36
- import org .springframework .transaction .annotation .Isolation ;
37
- import org .springframework .transaction .annotation .Propagation ;
38
- import org .springframework .transaction .interceptor .NameMatchTransactionAttributeSource ;
37
+ import org .springframework .transaction .interceptor .DefaultTransactionAttribute ;
38
+ import org .springframework .transaction .interceptor .MethodMapTransactionAttributeSource ;
39
39
import org .springframework .transaction .interceptor .TransactionAttributeSource ;
40
40
import org .springframework .transaction .interceptor .TransactionInterceptor ;
41
41
import org .springframework .util .Assert ;
@@ -53,10 +53,6 @@ public class JobOperatorFactoryBean implements FactoryBean<JobOperator>, Initial
53
53
54
54
protected static final Log logger = LogFactory .getLog (JobOperatorFactoryBean .class );
55
55
56
- private static final String TRANSACTION_ISOLATION_LEVEL_PREFIX = "ISOLATION_" ;
57
-
58
- private static final String TRANSACTION_PROPAGATION_PREFIX = "PROPAGATION_" ;
59
-
60
56
private PlatformTransactionManager transactionManager ;
61
57
62
58
private TransactionAttributeSource transactionAttributeSource ;
@@ -83,12 +79,14 @@ public void afterPropertiesSet() throws Exception {
83
79
this .taskExecutor = new SyncTaskExecutor ();
84
80
}
85
81
if (this .transactionAttributeSource == null ) {
86
- Properties transactionAttributes = new Properties ();
87
- String transactionProperties = String .join ("," , TRANSACTION_PROPAGATION_PREFIX + Propagation .REQUIRED ,
88
- TRANSACTION_ISOLATION_LEVEL_PREFIX + Isolation .DEFAULT );
89
- transactionAttributes .setProperty ("stop*" , transactionProperties );
90
- this .transactionAttributeSource = new NameMatchTransactionAttributeSource ();
91
- ((NameMatchTransactionAttributeSource ) transactionAttributeSource ).setProperties (transactionAttributes );
82
+ this .transactionAttributeSource = new MethodMapTransactionAttributeSource ();
83
+ DefaultTransactionAttribute transactionAttribute = new DefaultTransactionAttribute ();
84
+ Method stopMethod = TaskExecutorJobOperator .class .getMethod ("stop" , JobExecution .class );
85
+ Method abandonMethod = TaskExecutorJobOperator .class .getMethod ("abandon" , JobExecution .class );
86
+ ((MethodMapTransactionAttributeSource ) this .transactionAttributeSource ).addTransactionalMethod (stopMethod ,
87
+ transactionAttribute );
88
+ ((MethodMapTransactionAttributeSource ) this .transactionAttributeSource )
89
+ .addTransactionalMethod (abandonMethod , transactionAttribute );
92
90
}
93
91
}
94
92
0 commit comments