背景
我们经常使用对象的方式都是@Autowired的方式,这个方式的弊端就是使用的类必须是IOC容器管理的类,如果不是就不能注入,如果我们需要一个普通的类也能获取到对象该怎么办呢,就是这个办法了。
@Component
public class AppUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
applicationContext = arg0;
}
public static Object getObject(String id) {
Object object = null;
object = applicationContext.getBean(id);
return object;
}
}
普通类中获取对象
UserService o = AppUtil.getObject("userService");