Cache DefaultActiveProfilesResolver instance since it is stateless

This commit is contained in:
Sam Brannen 2020-10-26 13:58:45 +01:00
parent 9287c15583
commit b1fef925af
1 changed files with 14 additions and 11 deletions

View File

@ -50,6 +50,8 @@ abstract class ActiveProfilesUtils {
private static final Log logger = LogFactory.getLog(ActiveProfilesUtils.class);
private static final DefaultActiveProfilesResolver defaultActiveProfilesResolver = new DefaultActiveProfilesResolver();
/**
* Resolve <em>active bean definition profiles</em> for the supplied {@link Class}.
@ -86,20 +88,21 @@ abstract class ActiveProfilesUtils {
annotation, descriptor.getDeclaringClass().getName()));
}
ActiveProfilesResolver resolver;
Class<? extends ActiveProfilesResolver> resolverClass = annotation.resolver();
if (ActiveProfilesResolver.class == resolverClass) {
resolverClass = DefaultActiveProfilesResolver.class;
resolver = defaultActiveProfilesResolver;
}
ActiveProfilesResolver resolver;
try {
resolver = BeanUtils.instantiateClass(resolverClass, ActiveProfilesResolver.class);
}
catch (Exception ex) {
String msg = String.format("Could not instantiate ActiveProfilesResolver of type [%s] " +
"for test class [%s]", resolverClass.getName(), rootDeclaringClass.getName());
logger.error(msg);
throw new IllegalStateException(msg, ex);
else {
try {
resolver = BeanUtils.instantiateClass(resolverClass, ActiveProfilesResolver.class);
}
catch (Exception ex) {
String msg = String.format("Could not instantiate ActiveProfilesResolver of type [%s] " +
"for test class [%s]", resolverClass.getName(), rootDeclaringClass.getName());
logger.error(msg);
throw new IllegalStateException(msg, ex);
}
}
String[] profiles = resolver.resolve(rootDeclaringClass);