在Java类中获取Spring Bean的方式有多种,可以参考:Java类获取Spring中bean的5种方式,此处描述其中一种方式的改进。
文中提到的通过实现接口ApplicationContextAware的方式获取Spring容器中的bean,需要在applicationContext.xml文件进行配置,此处改用Component声明的方式,代码样例如下:
@Component
public class ApplicationContextAwareImpl implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
@Override
@Autowired
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ApplicationContextAwareImpl.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
}
获取到ApplicationContext 实例之后,就可以获取对应的bean实例,示例如下:
ApplicationContextAwareImpl.getApplicationContext().getBean(MyClass.class);