2016-11-11 2 views
0

У меня есть проект java с использованием Spring. Я определил три класса: BaseClass, SubClass1 и SubClass2. Два SubClassx расширяют BaseClass. Теперь мне нужно определить две фасоли, один находится в определенном профиле:Весной, как определить две фасоль, с тем же именем и другим классом

<bean id="newBean" class="SubClass1"> 

и

<beans profile="xxx"> 
    <bean id="newBean" class="SubClass2"> 
</beans> 

они находятся в разных файлах XML. Я использую Ломбок впрыснуть SubClass2 newBean в классе:

public class WarmUpAgent extends WarmUpAgent { 
    @Setter(onMethod = @__(@Required)) 
    private SubClass2 subClass2; 
... 

<bean id="warmUpAgent" class="WarmUpAgent"> 
    <property name="subClass2" ref="newBean" /> 
</bean> 

Но когда я запускаю проект с профилем «ххх», он бросает:

IllegalStateException: Cannot convert value of type [SubClass1] to required type [SubClass2] for property 'subClass2' 

Кажется, что не перезаписать фасоль newBean с SubClass2 , хотя я активировал профиль «xxx». Есть ли способ использовать профиль, чтобы определить два компонента, с одним и тем же именем и с другим классом?

спасибо.

================================================================================================================================== ==========================

Я поставил

<bean id="newBean" class="SubClass1"> 

и

<beans profile="xxx"> 
    <bean id="newBean" class="SubClass2"> 
</beans> 

в одном XML файл, и он работает. Но я хотел бы разделить их на два xml-файла, согласно проектной организации. Любые решения для реализации этого?

+0

Вы твердят то же самое имя, но вы используете тот же идентификатор не назовёшь! –

+0

Извините, моя ошибка. Я также пытался использовать имя, это тоже не работает. – GameBoy

+0

вы можете показать свои 2 xml-файла – kuhajeyan

ответ

0

Попробуйте использовать с именем вместо id.

<bean name="newBean" class="SubClass1"> 
<beans profile="xxx"> 
    <bean name="newBean" class="SubClass2"> 
</beans> 
+0

Я пробовал, не работал. – GameBoy

0

Попробуйте ограничивая первый компонент для профиля по умолчанию

<beans profile="default"> 
    <bean id="newBean" class="SubClass1"> 
</beans> 
<beans profile="xxx"> 
    <bean id="newBean" class="SubClass2"> 
</beans> 
Смежные вопросы