|
|
|
|
@ -57,40 +57,31 @@ class ApplicationContextAotGeneratorTests {
@@ -57,40 +57,31 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
@Test |
|
|
|
|
void generateApplicationContextWhenHasSimpleBean() { |
|
|
|
|
GenericApplicationContext applicationContext = new GenericApplicationContext(); |
|
|
|
|
applicationContext.registerBeanDefinition("test", |
|
|
|
|
new RootBeanDefinition(SimpleComponent.class)); |
|
|
|
|
applicationContext.registerBeanDefinition("test", new RootBeanDefinition(SimpleComponent.class)); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()) |
|
|
|
|
.containsOnly("test"); |
|
|
|
|
assertThat(freshApplicationContext.getBean("test")) |
|
|
|
|
.isInstanceOf(SimpleComponent.class); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).containsOnly("test"); |
|
|
|
|
assertThat(freshApplicationContext.getBean("test")).isInstanceOf(SimpleComponent.class); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void generateApplicationContextWhenHasAutowiring() { |
|
|
|
|
GenericApplicationContext applicationContext = new GenericApplicationContext(); |
|
|
|
|
applicationContext.registerBeanDefinition( |
|
|
|
|
AnnotationConfigUtils.AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME, |
|
|
|
|
applicationContext.registerBeanDefinition(AnnotationConfigUtils.AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME, |
|
|
|
|
BeanDefinitionBuilder |
|
|
|
|
.rootBeanDefinition(AutowiredAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
applicationContext.registerBeanDefinition("autowiredComponent", |
|
|
|
|
new RootBeanDefinition(AutowiredComponent.class)); |
|
|
|
|
.rootBeanDefinition(AutowiredAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
applicationContext.registerBeanDefinition("autowiredComponent", new RootBeanDefinition(AutowiredComponent.class)); |
|
|
|
|
applicationContext.registerBeanDefinition("number", |
|
|
|
|
BeanDefinitionBuilder.rootBeanDefinition(Integer.class, "valueOf") |
|
|
|
|
.addConstructorArgValue("42").getBeanDefinition()); |
|
|
|
|
BeanDefinitionBuilder |
|
|
|
|
.rootBeanDefinition(Integer.class, "valueOf") |
|
|
|
|
.addConstructorArgValue("42").getBeanDefinition()); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()) |
|
|
|
|
.containsOnly("autowiredComponent", "number"); |
|
|
|
|
AutowiredComponent bean = freshApplicationContext |
|
|
|
|
.getBean(AutowiredComponent.class); |
|
|
|
|
assertThat(bean.getEnvironment()) |
|
|
|
|
.isSameAs(freshApplicationContext.getEnvironment()); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).containsOnly("autowiredComponent", "number"); |
|
|
|
|
AutowiredComponent bean = freshApplicationContext.getBean(AutowiredComponent.class); |
|
|
|
|
assertThat(bean.getEnvironment()).isSameAs(freshApplicationContext.getEnvironment()); |
|
|
|
|
assertThat(bean.getCounter()).isEqualTo(42); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
@ -101,17 +92,14 @@ class ApplicationContextAotGeneratorTests {
@@ -101,17 +92,14 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
applicationContext.registerBeanDefinition( |
|
|
|
|
AnnotationConfigUtils.COMMON_ANNOTATION_PROCESSOR_BEAN_NAME, |
|
|
|
|
BeanDefinitionBuilder |
|
|
|
|
.rootBeanDefinition(CommonAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
.rootBeanDefinition(CommonAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
applicationContext.registerBeanDefinition("initDestroyComponent", |
|
|
|
|
new RootBeanDefinition(InitDestroyComponent.class)); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()) |
|
|
|
|
.containsOnly("initDestroyComponent"); |
|
|
|
|
InitDestroyComponent bean = freshApplicationContext |
|
|
|
|
.getBean(InitDestroyComponent.class); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).containsOnly("initDestroyComponent"); |
|
|
|
|
InitDestroyComponent bean = freshApplicationContext.getBean(InitDestroyComponent.class); |
|
|
|
|
assertThat(bean.events).containsExactly("init"); |
|
|
|
|
freshApplicationContext.close(); |
|
|
|
|
assertThat(bean.events).containsExactly("init", "destroy"); |
|
|
|
|
@ -124,24 +112,19 @@ class ApplicationContextAotGeneratorTests {
@@ -124,24 +112,19 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
applicationContext.registerBeanDefinition( |
|
|
|
|
AnnotationConfigUtils.COMMON_ANNOTATION_PROCESSOR_BEAN_NAME, |
|
|
|
|
BeanDefinitionBuilder |
|
|
|
|
.rootBeanDefinition(CommonAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
RootBeanDefinition beanDefinition = new RootBeanDefinition( |
|
|
|
|
InitDestroyComponent.class); |
|
|
|
|
.rootBeanDefinition(CommonAnnotationBeanPostProcessor.class) |
|
|
|
|
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); |
|
|
|
|
RootBeanDefinition beanDefinition = new RootBeanDefinition(InitDestroyComponent.class); |
|
|
|
|
beanDefinition.setInitMethodName("customInit"); |
|
|
|
|
beanDefinition.setDestroyMethodName("customDestroy"); |
|
|
|
|
applicationContext.registerBeanDefinition("initDestroyComponent", beanDefinition); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()) |
|
|
|
|
.containsOnly("initDestroyComponent"); |
|
|
|
|
InitDestroyComponent bean = freshApplicationContext |
|
|
|
|
.getBean(InitDestroyComponent.class); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).containsOnly("initDestroyComponent"); |
|
|
|
|
InitDestroyComponent bean = freshApplicationContext.getBean(InitDestroyComponent.class); |
|
|
|
|
assertThat(bean.events).containsExactly("customInit", "init"); |
|
|
|
|
freshApplicationContext.close(); |
|
|
|
|
assertThat(bean.events).containsExactly("customInit", "init", "customDestroy", |
|
|
|
|
"destroy"); |
|
|
|
|
assertThat(bean.events).containsExactly("customInit", "init", "customDestroy", "destroy"); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -149,8 +132,7 @@ class ApplicationContextAotGeneratorTests {
@@ -149,8 +132,7 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
void generateApplicationContextWhenHasNoAotContributions() { |
|
|
|
|
GenericApplicationContext applicationContext = new GenericApplicationContext(); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).isEmpty(); |
|
|
|
|
assertThat(compiled.getSourceFile()).contains( |
|
|
|
|
"beanFactory.setAutowireCandidateResolver(new ContextAnnotationAutowireCandidateResolver())"); |
|
|
|
|
@ -163,8 +145,7 @@ class ApplicationContextAotGeneratorTests {
@@ -163,8 +145,7 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
applicationContext.registerBeanDefinition("test", |
|
|
|
|
new RootBeanDefinition(NoOpBeanFactoryInitializationAotProcessor.class)); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).isEmpty(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
@ -175,8 +156,7 @@ class ApplicationContextAotGeneratorTests {
@@ -175,8 +156,7 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
applicationContext.registerBeanDefinition("test", |
|
|
|
|
new RootBeanDefinition(NoOpBeanRegistrationAotProcessor.class)); |
|
|
|
|
testCompiledResult(applicationContext, (initializer, compiled) -> { |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext( |
|
|
|
|
initializer); |
|
|
|
|
GenericApplicationContext freshApplicationContext = toFreshApplicationContext(initializer); |
|
|
|
|
assertThat(freshApplicationContext.getBeanDefinitionNames()).isEmpty(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
@ -205,13 +185,11 @@ class ApplicationContextAotGeneratorTests {
@@ -205,13 +185,11 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
implements BeanFactoryPostProcessor, BeanFactoryInitializationAotProcessor { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) |
|
|
|
|
throws BeansException { |
|
|
|
|
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public BeanFactoryInitializationAotContribution processAheadOfTime( |
|
|
|
|
ConfigurableListableBeanFactory beanFactory) { |
|
|
|
|
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -222,8 +200,7 @@ class ApplicationContextAotGeneratorTests {
@@ -222,8 +200,7 @@ class ApplicationContextAotGeneratorTests {
|
|
|
|
|
implements BeanPostProcessor, BeanRegistrationAotProcessor { |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public BeanRegistrationAotContribution processAheadOfTime( |
|
|
|
|
RegisteredBean registeredBean) { |
|
|
|
|
public BeanRegistrationAotContribution processAheadOfTime(RegisteredBean registeredBean) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|