#205 - Jackson2ModuleRegisteringBeanPostProcessor now looks up dependent beans lazily.

We now only lookup the beans, Jackson2ModuleRegisteringBeanPostProcessor needs to post-process other beans if the post-processing is really needed. This avoids premature initialization of those dependent beans.
This commit is contained in:
Oliver Gierke
2014-06-24 16:08:22 +02:00
parent ce5b66cd9a
commit d4d788d9e0

View File

@@ -214,9 +214,7 @@ class HypermediaSupportBeanDefinitionRegistrar implements ImportBeanDefinitionRe
*/
static class Jackson2ModuleRegisteringBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware {
private CurieProvider curieProvider;
private RelProvider relProvider;
private ObjectMapper halObjectMapper;
private BeanFactory beanFactory;
/*
* (non-Javadoc)
@@ -224,10 +222,7 @@ class HypermediaSupportBeanDefinitionRegistrar implements ImportBeanDefinitionRe
*/
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.curieProvider = getCurieProvider(beanFactory);
this.relProvider = beanFactory.getBean(DELEGATING_REL_PROVIDER_BEAN_NAME, RelProvider.class);
this.halObjectMapper = beanFactory.getBean(HAL_OBJECT_MAPPER_BEAN_NAME, ObjectMapper.class);
this.beanFactory = beanFactory;
}
/*
@@ -276,6 +271,10 @@ class HypermediaSupportBeanDefinitionRegistrar implements ImportBeanDefinitionRe
}
}
CurieProvider curieProvider = getCurieProvider(beanFactory);
RelProvider relProvider = beanFactory.getBean(DELEGATING_REL_PROVIDER_BEAN_NAME, RelProvider.class);
ObjectMapper halObjectMapper = beanFactory.getBean(HAL_OBJECT_MAPPER_BEAN_NAME, ObjectMapper.class);
halObjectMapper.registerModule(new Jackson2HalModule());
halObjectMapper.setHandlerInstantiator(new Jackson2HalModule.HalHandlerInstantiator(relProvider, curieProvider));