From d4d788d9e0feb8f85051cbd10ffca5069ba54185 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 24 Jun 2014 16:08:22 +0200 Subject: [PATCH] #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. --- .../HypermediaSupportBeanDefinitionRegistrar.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/config/HypermediaSupportBeanDefinitionRegistrar.java b/src/main/java/org/springframework/hateoas/config/HypermediaSupportBeanDefinitionRegistrar.java index 15ae9a48..1d4ff049 100644 --- a/src/main/java/org/springframework/hateoas/config/HypermediaSupportBeanDefinitionRegistrar.java +++ b/src/main/java/org/springframework/hateoas/config/HypermediaSupportBeanDefinitionRegistrar.java @@ -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));