4 回答
TA贡献1836条经验 获得超4个赞
为了在非托管类上检索托管 spring bean,我编写了一个类来执行您想要执行的操作。
@Configuration
public class ApplicationContextProvider {
private static ApplicationContext context;
public ApplicationContextProvider(ApplicationContext context){
ApplicationContextProvider.context = context;
}
public static ApplicationContext getContext() {
if (Objects.isNull(ApplicationContextProvider.context)) {
throw new IllegalStateException("Context isn't available!");
}
return ApplicationContextProvider.context;
}
public static <E> E getBean(Class<E> bean){
return getContext().getBean(bean);
}
}
要获得托管 bean,只需ApplicationContextProvider.getBean(MyMapper.class);
TA贡献1828条经验 获得超6个赞
您可以在非托管类中实现ApplicationContextAware接口。这将导致应用程序上下文通过 setter 注入,并允许您访问 Spring 生态系统的其余部分。
然后你就可以打电话了applicationContext.getBean(MyMapper.class);
。
添加回答
举报