Spring中提供一些Aware相关接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,实作这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实现BeanFactoryAware的Bean在初始后,Spring容器将会注入BeanFactory的实例,而实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例等等
实现了ApplicationContextAware接口,就可以通过ApplicationContext的实例获取到我们想要的bean
public class SpringFactory implements ApplicationContextAware {
private static ApplicationContext context;
@SuppressWarnings("static-access")
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.context = applicationContext;
}
public static Object getObject(String id) {
Object object = null;
object = context.getBean(id);
return object;
}
}
<bean id="springfactory" class="com.april.service.impl.SpringFactory"></bean>
例如可以在javaBean中获取
TestDaoImpl testDao = (TestDaoImpl) SpringFactory.getObject("testDao")