diff --git a/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java b/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java index 1e4a6db9d8e..cea130a762d 100644 --- a/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java +++ b/org.springframework.context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java @@ -191,12 +191,12 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader /** ResourcePatternResolver used by this context */ private ResourcePatternResolver resourcePatternResolver; - /** MessageSource we delegate our implementation of this interface to */ - private MessageSource messageSource; - /** LifecycleProcessor for managing the lifecycle of beans within this context */ private LifecycleProcessor lifecycleProcessor; + /** MessageSource we delegate our implementation of this interface to */ + private MessageSource messageSource; + /** Helper class used in event publishing */ private ApplicationEventMulticaster applicationEventMulticaster; @@ -495,12 +495,6 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader beanFactory.registerResolvableDependency(ApplicationEventPublisher.class, this); beanFactory.registerResolvableDependency(ApplicationContext.class, this); - // Initialize conversion service for this context. - if (beanFactory.containsBean(CONVERSION_SERVICE_BEAN_NAME)) { - beanFactory.setConversionService( - beanFactory.getBean(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class)); - } - // Detect a LoadTimeWeaver and prepare for weaving, if found. if (beanFactory.containsBean(LOAD_TIME_WEAVER_BEAN_NAME)) { beanFactory.addBeanPostProcessor(new LoadTimeWeaverAwareProcessor(beanFactory)); @@ -861,6 +855,12 @@ public abstract class AbstractApplicationContext extends DefaultResourceLoader * initializing all remaining singleton beans. */ protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory beanFactory) { + // Initialize conversion service for this context. + if (beanFactory.containsBean(CONVERSION_SERVICE_BEAN_NAME)) { + beanFactory.setConversionService( + beanFactory.getBean(CONVERSION_SERVICE_BEAN_NAME, ConversionService.class)); + } + // Stop using the temporary ClassLoader for type matching. beanFactory.setTempClassLoader(null); diff --git a/org.springframework.context/src/test/java/org/springframework/context/annotation/FooServiceDependentConverter.java b/org.springframework.context/src/test/java/org/springframework/context/annotation/FooServiceDependentConverter.java new file mode 100644 index 00000000000..16e2773f9f5 --- /dev/null +++ b/org.springframework.context/src/test/java/org/springframework/context/annotation/FooServiceDependentConverter.java @@ -0,0 +1,38 @@ +/* + * Copyright 2002-2010 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.context.annotation; + +import example.scannable.FooService; + +import org.springframework.core.convert.converter.Converter; + +/** + * @author Juergen Hoeller + */ +public class FooServiceDependentConverter implements Converter { + + private FooService fooService; + + public void setFooService(FooService fooService) { + this.fooService = fooService; + } + + public org.springframework.beans.TestBean convert(String source) { + return new org.springframework.beans.TestBean(source); + } + +} diff --git a/org.springframework.context/src/test/java/org/springframework/context/annotation/simpleConfigTests.xml b/org.springframework.context/src/test/java/org/springframework/context/annotation/simpleConfigTests.xml index 4b68500000b..46ad2980a40 100644 --- a/org.springframework.context/src/test/java/org/springframework/context/annotation/simpleConfigTests.xml +++ b/org.springframework.context/src/test/java/org/springframework/context/annotation/simpleConfigTests.xml @@ -25,4 +25,12 @@ + + + + + + + +