利用ApplicationContextAware在非Spring管理的类注入bean

我们在做开发时,并不是说在每一个地方都能方便地将需要的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();
    }

你可能感兴趣的:(利用ApplicationContextAware在非Spring管理的类注入bean)