У меня есть Spring bean, скажем:
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class AImpl implements A {
public void setSomeDependency(D dependency) {
// This setter DOES NOT BELONG to interface A
}
}
<bean id="aImpl" class="AImpl"/>
Теперь я хочу, чтобы интеграция протестировала его, но сначала мне нужно высмеять зависимость D
, потому что это слишком много. Поскольку AImpl
реализует интерфейс и содержит транзакционную аннотацию, сгенерированный прокси совместим только с интерфейсом A
, поэтому я могу это сделать:
@Inject @Named("aImpl")
private A a;
но не может:
@Inject @Named("aImpl")
private AImpl a;
В результате я не могу издеваться над своей зависимостью.
Обратите внимание, что добавление void setSomeDependency(D dependency)
в интерфейс A
не является опцией, поскольку оно не имеет никакого коммерческого значения. Он также использует proxy-target-class="true"
, поскольку он разбивает много других beans (этот атрибут влияет на все beans в контексте).
Есть ли способ отключить введенный bean A
, поэтому я мог бы применить его к AImpl
?