tamaño - como reducir una imagen en java
Interfaz de autoajuste de resorte (2)
@Autowired
es perfecto para este escenario. Puede autoaumentar una clase específica (implementación) o usar una interfaz.
Considera este ejemplo:
public interface Item {
}
@Component("itemA")
public class ItemImplA implements Item {
}
@Component("itemB")
public class ItemImplB implements Item {
}
Ahora puede elegir cuál de estas implementaciones se usará simplemente eligiendo un nombre para el objeto de acuerdo con el valor de anotación @Component
Me gusta esto:
@Autowired
private Item itemA; // ItemA
@Autowired
private Item itemB // ItemB
Para crear la misma instancia varias veces, puede usar la anotación @Qualifier para especificar qué implementación se usará:
@Autowired
@Qualifier("itemA")
private Item item1;
En caso de que necesite instanciar los elementos con algunos parámetros de constructor específicos, deberá especificar un archivo de configuración XML. Buen tutorial sobre el uso de Qulifiers y autowiring se puede encontrar AQUÍ .
Tengo un interfaz IMenuItem
public interface IMenuItem {
String getIconClass();
void setIconClass(String iconClass);
String getLink();
void setLink(String link);
String getText();
void setText(String text);
}
Entonces tengo una implementación para esta interfaz
@Component
@Scope("prototype")
public class MenuItem implements IMenuItem {
private String iconClass;
private String link;
private String text;
public MenuItem(String iconClass, String link, String text) {
this.iconClass = iconClass;
this.link = link;
this.text = text;
}
//setters and getters
}
¿Hay alguna manera de crear varias instancias de MenuItem desde una clase de configuración, usando solo la interfaz IMenuItem? con @autowired o algo así? ¿También es posible realizar una conexión automática especificando los argumentos del constructor?
Creo que la mitad del trabajo se hace con su anotación @scope
, si no hay ninguna otra implementación de la interfaz ImenuItem en su proyecto a continuación, se crearán varias instancias.
@Autowired
private IMenuItem menuItem
pero si hay varias implementaciones, debe usar la anotación @Qualifer
.
@Autowired
@Qualifer("MenuItem")
private IMenuItem menuItem
esto también creará instancias múltiples