我们在做开发时,并不是说在每一个地方都能方便地将需要的bean注入到我们想要的地方去,比如在Util中
使用Service,Util一般不会被Spring管理,我们就不能直接注入了。这个时候就要用到ApplicationContextAware了。
那么,ApplicationContextAware这个类究竟是干嘛的,有什么作用呢?说得明白一点:实现了这个接口的类,可以方便地获得ApplicationContext中所有的bean。当Spring容器初始化时,会自动调用ApplicationContextAware中的setApplicationContext方法(自动将ApplicationContext注入进来)。
实现代码很简单,首先实现ApplicationContextAware接口
public class ApplicationUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationUtil.applicationContext = applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
}
然后,将ApplicationUtil类被Spring管理起来就可以了。
@Bean(name = "applicationUtil")
public ApplicationUtil applicationUtil() {
return new ApplicationUtil();
}
网友评论