Test injection of special types on @Feature methods
Prove that injection of special container types such as ResourceLoader, BeanFactory, etc already works with the current implementation of @Feature methods. Issue: SPR-7975 git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4082 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
parent
39c43de27d
commit
6b616956fc
|
|
@ -16,9 +16,14 @@
|
||||||
|
|
||||||
package org.springframework.context.annotation;
|
package org.springframework.context.annotation;
|
||||||
|
|
||||||
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||||
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
|
import static org.junit.Assert.assertThat;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.context.annotation.configuration.StubSpecification;
|
import org.springframework.context.annotation.configuration.StubSpecification;
|
||||||
import org.springframework.context.config.FeatureSpecification;
|
import org.springframework.context.config.FeatureSpecification;
|
||||||
|
import org.springframework.core.io.ResourceLoader;
|
||||||
|
|
||||||
public class FeatureConfigurationClassTests {
|
public class FeatureConfigurationClassTests {
|
||||||
|
|
||||||
|
|
@ -29,6 +34,14 @@ public class FeatureConfigurationClassTests {
|
||||||
ctx.refresh();
|
ctx.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void featureMethodsMayAcceptResourceLoaderParameter() {
|
||||||
|
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
||||||
|
ctx.setDisplayName("enclosing app ctx");
|
||||||
|
ctx.register(FeatureMethodWithResourceLoaderParameter.class);
|
||||||
|
ctx.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -50,3 +63,15 @@ class FeatureConfigWithBeanAnnotatedMethod {
|
||||||
return new StubSpecification();
|
return new StubSpecification();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FeatureConfiguration
|
||||||
|
class FeatureMethodWithResourceLoaderParameter {
|
||||||
|
@Feature
|
||||||
|
public FeatureSpecification feature(ResourceLoader rl) {
|
||||||
|
// prove that the injected ResourceLoader is actually the enclosing application context
|
||||||
|
Object target = ((EarlyBeanReferenceProxy)rl).dereferenceTargetBean();
|
||||||
|
assertThat(target, instanceOf(AnnotationConfigApplicationContext.class));
|
||||||
|
assertThat(((AnnotationConfigApplicationContext)target).getDisplayName(), is("enclosing app ctx"));
|
||||||
|
return new StubSpecification();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue