记录获取spring容器对象的几种方式
一、BeanFactoryAware接口
/**
* 获取spring容器的方式-实现BeanFactoryAware
* @Author:lzf
* @Date: 2023-3-17
*/
@Service
public class UserService implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public void test(){
User user = beanFactory.getBean(User.class);
System.out.println(user);
}
}
二、ApplicationContextAware接口
/**
* 获取spring容器的方式-实现ApplicationContextAware
*
* @Author:lzf
* @Date: 2023-3-17
*/
@Service
public class UserService1 implements ApplicationContextAware {
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
public void test(){
User user = (User) applicationContext.getBean("user");
System.out.println(user);
}
}
三、ApplicationListener接口
注意的是该接口接收的泛型是ContextRefreshedEvent
类。
/**
* 获取spring容器的方式-实现ApplicationListener
* @Author:lzf
* @Date: 2023-3-17
*/
@Service
public class UserService2 implements ApplicationListener<ContextRefreshedEvent> {
private ApplicationContext applicationContext;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
applicationContext = event.getApplicationContext();
}
public void test(){
User user = applicationContext .getBean(User.class);
System.out.println(user);
}
}