Я экспериментировал с использованием Spring 3.1 профили определения bean и вложенные bean-компоненты. Я надеялся, что смогу определить разные bean-компоненты в зависимости от активного профиля. Рассмотрим следующий сильно упрощенный пример, в котором мой контекст Spring содержит что-то вроде
<bean id="say" class="test.Say" p:hello-ref="hello"/>
<beans profile="prod">
<bean id="hello" class="test.Hello" p:subject="Production!"/>
</beans>
<beans profile="dev">
<bean id="hello" class="test.Hello" p:subject="Development!"/>
</beans>
Я получаю следующую ошибку:
Исключение в потоке «main» org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем say, определенным в ресурсе пути к классу [applicationContext.xml]: не удается разрешить ссылку на bean-компонент «hello» при установке свойства bean-компонента «hello» ; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: в org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.resolveReference (BeanDefinitionValueResolver.resolveReference (BeanDefinitionValue) или atrameRefinition8svalue.frameworkes.frameworkes.frameworkes.frameworkes.frameworkes / .support.BeanDefinitionValueResolver.resolveValueIfNeeded (BeanDefinitionValueResolver.java:106) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.apply (AbstractAutowireCapableBeanFactory.apply (AbstractAutowireCapableBeanFactory.apply)
Я ожидал, что компонент hello будет определен в соответствии с активным профилем Maven (в моем случае prod или dev). Я начинаю думать, что активные профили Spring (spring.profiles.active) могут быть совершенно не связаны с профилями Maven.
Может ли кто-нибудь объяснить, в чем я ошибаюсь? (Возможно ли это вообще с помощью профилей?).