Dado que tengo un grano de primavera configurado comocómo sobrescribir los granos de servicios de Primavera por su nombre, utilizando anotaciones única
@Service("myService")
public class DefaultService extends MyService {
}
y una clase usando este bean
public class Consumer {
@Autowired
@Qualifier("myService")
private MyService service;
...
}
ahora quiero mi proyecto, que incluye las clases anteriores, para tener Consumer
se está inyectando otra implementación de MyService
. Por lo tanto me gustaría sobrescribir el bean myService
@Service("myService")
public class SpecializedService implements MyService {
}
resultante en Consumer
llevar ahora una instancia de SpecializedService
en lugar de DefaultService
. Por definición, no puedo tener dos frijoles con el mismo nombre en el contenedor de Spring. ¿Cómo puedo decir en primavera que la definición del nuevo servicio sobrescribirá al anterior? No quiero modificar la clase Consumer
.
Gracias, Willie. Terminamos con su solución ya que también decidimos por razones de mantenimiento (estamos hablando de cientos de servicios) mantener la lista de cada servicio en un solo archivo, a saber, la configuración de Spring Bean. Definir solo ID y el nombre de clase no es demasiado doloroso, ya que usar anotaciones solo es más tentador. –