style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

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.

class MyGenericClass<T>{}
@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;
    }
}

El punto con esto es que obviamente al implementar MyGenericClass de esta manera se espera que el tipo T genérico pueda tomar diferentes valores y entonces podrán levantarse varios beans de la misma clase pero de diferente tipo.

Y me surge un problema como diferenciará Spring cual es el tipo T si no se lo indico? se que puede hacerlo.

si inyecto el bean con

@Autowired
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:

@Service
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();
...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">