У меня есть ряд веб-действий, которые я реализую в Seam для выполнения операций создания, чтения, обновления и т. Д. Для моих операций чтения/обновления/удаления я хотел бы иметь отдельные классы действий, которые расширяют абстрактный базовый класс. Я хотел бы поместить метод @Factory в абстрактный базовый класс для извлечения элемента, на который нужно воздействовать. Например, у меня есть это в качестве базового класса:Seam @Factory в абстрактном базовом классе?
public abstract class BaseAction {
@In(required=false)@Out(required=false)
private MyItem item=null;
public MyItem getItem(){...}
public void setItem(...){...}
@Factory("item")
public void initItem(){...}
}
Мои подклассы будет распространяться BaseAction, так что я не должен повторять логику, чтобы загрузить элемент, который должен просматривать, удалять, обновлять и т.д. Однако, когда я запускаю свое приложение, Seam выдает ошибки, заявляя, что я объявил несколько @ Factory для одного и того же объекта.
Есть ли способ обойти это? Есть ли способ предоставить @Factory в базовом классе без использования этих ошибок?
Итак, другими словами, я бы нужно переместить @Factory вниз в подклассов и пункта имя по-разному, в отличие от возможности вытащить его в базовый класс. Верный? – Shadowman
Yup - независимо от того, какой подход вам нужен, необходимо убедиться, что имя компонента уникально. – mtpettyp