я насмешливый некоторые детали шва, используя следующую подпись:Как я могу переопределить определенный компонент шва?
@Name("myService")
@Install(debug = true, precedence = Install.MOCK)
public class MyServiceMock implements MyService
включить мой издевается, изменив эту строку в моей components.xml
<core:init transaction-management-enabled="false" />
к этому:
<core:init transaction-management-enabled="false" debug="true" />
Это было прекрасно, когда я хотел издеваться над всеми классами. У меня только что мой ant-скрипт заменил мой обычный component.xml версией отладки.
Есть ли способ условно издеваться над одним или несколькими компонентами? Идеальное решение позволило бы мне определить, какие компоненты будут издеваться во внешнем файле, таком как components.properties или другой файл свойств.
мое решение
Вот что я остановился на на основе germanescobar's ответа.
Я изменил свои фиктивные подписи компонентов, чтобы соответствовать этому:
@Name("myService")
@Install(false)
public class MyServiceMock implements MyService
Затем я добавил строку для каждого компонента, я хочу, чтобы дразнить к components.xml который выглядит следующим образом:
<component name="myService" installed="false" precedence="40"
class="com.foo.bar.baz.service.MyServiceMock" />
Чтобы включить макет, я установил installed=true
.
@braveterry Возможно, вы хотите перебрать все компоненты. См. Здесь: http://stackoverflow.com/questions/2838787/seam-list-all-components/2856848#2856848 как до –
@braveterry См. Также http://stackoverflow.com/questions/3140804/how-do-you -create-components-xml-for-debug-development-in-seam –
Я пробовал описанную процедуру http://stackoverflow.com/questions/3140804/how-do-you-create-components-xml-for-debug- разработки в шве до того, как я опубликовал. Он работает для условной установки компонента, но не для его переопределения. Вероятно, есть способ сделать это, но независимо от того, что я пробовал, оба компонента всегда заканчивались тем же приоритетом. – braveterry