Cómo obtener un bean genérico de Spring?
Estoy intentando inyectar un bean "manualmente" con Spring 3(sin la anotación @Autowired), entiendo que esto lo puedo lograr con el ApplicationContext (el cual estoy intentando "auto conectar" @Autowired, lo comento por que aún no lo he probado), el problema es que el objeto que busco tiene que ser de un tipo especifico de una clase genérica. Lo intento hacer asi ya que como intento hacerlo dentro de una librería espero dar la libertad a que la clase pueda ser extendida e inyectada por el que usa la librería y asi cuando devuelva el bean será el que ya este definido y no se definirá uno nuevo, supongo que no me explique bien asi que espero que se entienda mejor con un ejemplo. Aquí el ejemplo que intento probar.
@Configuration
class MyProvider<T>{//es una clase proveedora por eso el @Configuration
@Autowired
ApplicationContext ctx;
//toma en cuenta que ya puedo conocer el Tipo de T en tiempo de ejecución
@Bean
public MyGenericClass<T> getGenericBean(){
MyGenericClass genericBean=ctx.getBean(MyGenericClass.class);
if(genericBean==null){
genericBean=new MyGenericClass<T>();//ya que conozco el tipo T
}
return genericBean;
}
}
MyGenericClass<TipoX> beanEspecifico;
lo inyecta correctamente, pero como soy muy nuevo en esto no se como hacerlo por medio del ApplicationContext.
No se si alguno pudiera ayudarme, ya sea que supiera hacer lo que intento o que tenga una sugerencia mejor que haga lo mismo que estoy intentando por otros medios, se agradece mucho ayuda ya que como comento no soy ningún experto en este ámbito. Saludos y gracias de antemano PD: para explicar el punto que quedo al aire, el usuario de la librería puede hacer esto:class MyCustomClass extends MyGenericClass<TipoX>{
public void x(){}
}
//asi que cuando intente acceder al bean por el mismo metodo (supongo que para hacerlo homogeneo) el metodo devolvera el bean que él mismo levantó
...
MyProvider<TipoX> prov=MyProvider<>();
MyCustomClass beanEspecifico=(MyCustomClass)prov.getGenericBean(); //el resultado es que el puede castear sin problemas
beanEspecifico.x();
...
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 8 semanas 5 días
hace 12 semanas 6 días
hace 20 semanas 2 días
hace 28 semanas 3 días
hace 31 semanas 21 horas
hace 32 semanas 4 días
hace 35 semanas 6 días
hace 35 semanas 6 días
hace 41 semanas 6 días
hace 43 semanas 23 mins