Pre-size LinkedHashSet for annotation parsers

Issue: SPR-17074
This commit is contained in:
Juergen Hoeller
2018-08-07 01:35:57 +02:00
parent d72d376f03
commit 2938a95435
3 changed files with 22 additions and 22 deletions

View File

@@ -19,6 +19,7 @@ package org.springframework.transaction.annotation;
import java.io.Serializable;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
@@ -90,13 +91,18 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa
*/
public AnnotationTransactionAttributeSource(boolean publicMethodsOnly) {
this.publicMethodsOnly = publicMethodsOnly;
this.annotationParsers = new LinkedHashSet<>(2);
this.annotationParsers.add(new SpringTransactionAnnotationParser());
if (jta12Present) {
this.annotationParsers.add(new JtaTransactionAnnotationParser());
if (jta12Present || ejb3Present) {
this.annotationParsers = new LinkedHashSet<>(4);
this.annotationParsers.add(new SpringTransactionAnnotationParser());
if (jta12Present) {
this.annotationParsers.add(new JtaTransactionAnnotationParser());
}
if (ejb3Present) {
this.annotationParsers.add(new Ejb3TransactionAnnotationParser());
}
}
if (ejb3Present) {
this.annotationParsers.add(new Ejb3TransactionAnnotationParser());
else {
this.annotationParsers = Collections.singleton(new SpringTransactionAnnotationParser());
}
}
@@ -117,9 +123,7 @@ public class AnnotationTransactionAttributeSource extends AbstractFallbackTransa
public AnnotationTransactionAttributeSource(TransactionAnnotationParser... annotationParsers) {
this.publicMethodsOnly = true;
Assert.notEmpty(annotationParsers, "At least one TransactionAnnotationParser needs to be specified");
Set<TransactionAnnotationParser> parsers = new LinkedHashSet<>(annotationParsers.length);
Collections.addAll(parsers, annotationParsers);
this.annotationParsers = parsers;
this.annotationParsers = new LinkedHashSet<>(Arrays.asList(annotationParsers));
}
/**