Removed AbstractAsyncConfiguration's abstract "asyncAdvisor" method for Java 8 compatibility (to avoid method overloading problem for configuration classes)

This commit is contained in:
Juergen Hoeller 2014-01-05 02:28:27 +01:00
parent b35050caf2
commit 8c8eead667
3 changed files with 4 additions and 18 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2013 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -32,11 +32,11 @@ import org.springframework.scheduling.annotation.EnableAsync;
* @since 3.1 * @since 3.1
* @see EnableAsync * @see EnableAsync
* @see org.springframework.scheduling.annotation.AsyncConfigurationSelector * @see org.springframework.scheduling.annotation.AsyncConfigurationSelector
* @see org.springframework.scheduling.annotation.ProxyAsyncConfiguration
*/ */
@Configuration @Configuration
public class AspectJAsyncConfiguration extends AbstractAsyncConfiguration { public class AspectJAsyncConfiguration extends AbstractAsyncConfiguration {
@Override
@Bean(name=AnnotationConfigUtils.ASYNC_EXECUTION_ASPECT_BEAN_NAME) @Bean(name=AnnotationConfigUtils.ASYNC_EXECUTION_ASPECT_BEAN_NAME)
@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public AnnotationAsyncExecutionAspect asyncAdvisor() { public AnnotationAsyncExecutionAspect asyncAdvisor() {

View File

@ -53,7 +53,7 @@ public abstract class AbstractAsyncConfiguration implements ImportAware {
/** /**
* Collect any {@link AsyncConfigurer} beans through autowiring. * Collect any {@link AsyncConfigurer} beans through autowiring.
*/ */
@Autowired(required = false) @Autowired(required=false)
void setConfigurers(Collection<AsyncConfigurer> configurers) { void setConfigurers(Collection<AsyncConfigurer> configurers) {
if (CollectionUtils.isEmpty(configurers)) { if (CollectionUtils.isEmpty(configurers)) {
return; return;
@ -65,12 +65,4 @@ public abstract class AbstractAsyncConfiguration implements ImportAware {
this.executor = configurer.getAsyncExecutor(); this.executor = configurer.getAsyncExecutor();
} }
/**
* The component that will apply async execution advice to beans annotated with
* the async annotation. Subclasses will provide either a BeanPostProcessor in
* the case of proxy-based advice, or an AspectJ aspect if weaving is preferred.
*/
public abstract Object asyncAdvisor();
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2013 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -38,26 +38,20 @@ import org.springframework.util.Assert;
@Configuration @Configuration
public class ProxyAsyncConfiguration extends AbstractAsyncConfiguration { public class ProxyAsyncConfiguration extends AbstractAsyncConfiguration {
@Override
@Bean(name=AnnotationConfigUtils.ASYNC_ANNOTATION_PROCESSOR_BEAN_NAME) @Bean(name=AnnotationConfigUtils.ASYNC_ANNOTATION_PROCESSOR_BEAN_NAME)
@Role(BeanDefinition.ROLE_INFRASTRUCTURE) @Role(BeanDefinition.ROLE_INFRASTRUCTURE)
public AsyncAnnotationBeanPostProcessor asyncAdvisor() { public AsyncAnnotationBeanPostProcessor asyncAdvisor() {
Assert.notNull(this.enableAsync, "@EnableAsync annotation metadata was not injected"); Assert.notNull(this.enableAsync, "@EnableAsync annotation metadata was not injected");
AsyncAnnotationBeanPostProcessor bpp = new AsyncAnnotationBeanPostProcessor(); AsyncAnnotationBeanPostProcessor bpp = new AsyncAnnotationBeanPostProcessor();
Class<? extends Annotation> customAsyncAnnotation = enableAsync.getClass("annotation"); Class<? extends Annotation> customAsyncAnnotation = enableAsync.getClass("annotation");
if (customAsyncAnnotation != AnnotationUtils.getDefaultValue(EnableAsync.class, "annotation")) { if (customAsyncAnnotation != AnnotationUtils.getDefaultValue(EnableAsync.class, "annotation")) {
bpp.setAsyncAnnotationType(customAsyncAnnotation); bpp.setAsyncAnnotationType(customAsyncAnnotation);
} }
if (this.executor != null) { if (this.executor != null) {
bpp.setExecutor(this.executor); bpp.setExecutor(this.executor);
} }
bpp.setProxyTargetClass(this.enableAsync.getBoolean("proxyTargetClass")); bpp.setProxyTargetClass(this.enableAsync.getBoolean("proxyTargetClass"));
bpp.setOrder(this.enableAsync.<Integer>getNumber("order")); bpp.setOrder(this.enableAsync.<Integer>getNumber("order"));
return bpp; return bpp;
} }