переопределение конфигурации bean-компонента весной

Допустим, у меня есть два модуля. Один из них является основным, а другой — зависимым от ядра модулем реализации. Core — это JAR-файл для войны зависимых модулей реализации.

В ядре у меня есть bean-компонент, определенный как

<bean id="x" class="com.pokuri.X">
 <property name="y" ref="y"/>
 <property name="z" ref="z"/>
</bean>

И этот класс имеет следующий метод

public class X{

  public void doSomeJob(){
  .......
  }   

}

этот метод вызывается из некоторых основных классов. Теперь мне нужно изменить логику в этом методе doSomeJob ()X в соответствии с моей зависимой от ядра реализацией. Итак, я создаю такой класс

public class ExtX extends X{

  @override
  public void doSomeJob(){
    // changed logic
  }

}

и определил bean-компонент с тем же идентификатором в другом XML-файле контекста приложения, подобном этому.

<bean id="x" class="com.pokuri.ExtX">
     <property name="y" ref="y"/>
     <property name="z" ref="z"/>
</bean>

и мы создаем контекст приложения, используя параметр контекста contextConfigLocationв web.xml, указав значение как classpath:springfolder.

Но в базовой логике я получаю только экземпляр основного компонента (, т.е. Xэкземпляр ), а не ExtX.Как мы можем переопределить это определение bean-компонента и позволить системе начать использовать новое расширенное определение bean-компонента?

И я слышал, что с одним и тем же идентификатором в разных файлах контекста приложения будет переопределено первое загруженное определение компонента с более поздним загруженным определением компонента. Существует ли атрибут типа priorityв определении bean-компонента, позволяющий ApplicationContext использовать наивысший приоритет для рассмотрения над низкоприоритетным при обнаружении bean-компонентов с одинаковым идентификатором.

9
задан Pokuri 6 August 2012 в 18:25
поделиться