Creo que este enlace demuestra la mejor manera de obtener el contexto de la aplicación en cualquier lugar, incluso en la clase que no es bean. Me resulta muy útil. Espero que sea lo mismo para ti. El siguiente es el código abstracto de la misma.
Cree una nueva clase ApplicationContextProvider.java
package com.java2novice.spring;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class ApplicationContextProvider implements ApplicationContextAware{
private static ApplicationContext context;
public static ApplicationContext getApplicationContext() {
return context;
}
@Override
public void setApplicationContext(ApplicationContext ac)
throws BeansException {
context = ac;
}
}
Agregue una entrada en application-context.xml
<bean id="applicationContextProvider"
class="com.java2novice.spring.ApplicationContextProvider"/>
En caso de anotaciones (en lugar de application-context.xml)
@Component
public class ApplicationContextProvider implements ApplicationContextAware{
...
}
Obtén el contexto como este
TestBean tb = ApplicationContextProvider.getApplicationContext().getBean("testBean", TestBean.class);
¡¡Salud!!