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);
。
添加回答
舉報