获取spring容器对象

1、通过实现BeanFactoryAware接口获取spring容器对象

@Service
public class PersonService implements BeanFactoryAware {
    private BeanFactory beanFactory;

    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
        this.beanFactory = beanFactory;
    }

    public void add() {
        User user = (User) beanFactory.getBean("user");
    }
}

重写setBeanFactory方法,从而就可通过BeanFactory获取bean

2、通过实现ApplicationContextAware接口获取spring容器对象

@Service
public class PersonService implements ApplicationContextAware {
    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    public void add() {
        User user = (User) applicationContext.getBean("user");
    }
}

重写setApplicationContext方法,从而就可通过ApplicationContext获取bean

3、通过实现ApplicationListener接口获取spring容器对象

@Service
public class PersonService implements ApplicationListener {
    private ApplicationContext applicationContext;
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        applicationContext = event.getApplicationContext();
    }

    public void add() {
        User user = (User) applicationContext.getBean("user");
    }
}

重写onApplicationEvent方法,在此方法中对ApplicationContext进行赋值,从而就可通过ApplicationContext获取bean

你可能感兴趣的:(java,spring,java,后端)