У меня есть следующий абстрактный класс со свойством под названием portletBaseViewName
, которое должно быть разным для каждого конкретного контроллера, расширяющего AbstractController
.
public abstract class AbstractController {
private String portletBaseViewName;
protected String getPortletBaseViewName() {
return portletBaseViewName;
}
@Required
@Value("")
public void setPortletBaseViewName(String portletBaseViewName) {
this.portletBaseViewName = portletBaseViewName;
}
}
@Controller
@RequestMapping("VIEW")
public class ReservationOfBooksViewController extends AbstractController{}
Я знаю, что возможно объявить инъекцииXML, при этом:
<bean id="abstractController" class="es.alcampo.portalweb.portlets.common.controller.AbstractController" abstract="true">
<property name="portletBaseViewName" value="" />
</bean>
<bean id="reservationOfBooksViewController" class="es.example.portalweb.portlets.reservationofbooks.controller.ReservationOfBooksViewController" parent="abstractController">
<property name="portletBaseViewName" value="reservationOfBooks" />
</bean>
<bean id="myShopViewController" class="es.example.portalweb.portlets.reservationofbooks.controller.MyShopViewController" parent="abstractController">
<property name="portletBaseViewName" value="myShop" />
</bean>
Нужно ли переопределять?:
@Controller
@RequestMapping("VIEW")
public class ReservationOfBooksViewController extends AbstractController{
@Value("reservationOfBooks")
public void setPortletBaseViewName(String portletBaseViewName) {
super.setPortletBaseViewName(portletBaseViewName);
}
}
Мне не нравится предыдущий вариант, который был бы наиболее элегантным, если естьдостичь цели внедрения того или иного значения в зависимости от конкретного класса с помощью аннотаций?
Я знаю, что наследование и аннотации иногда конфликтуют.
Большое спасибо.