4 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
為了在非托管類上檢索托管 spring bean,我編寫了一個(gè)類來執(zhí)行您想要執(zhí)行的操作。
@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貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以在非托管類中實(shí)現(xiàn)ApplicationContextAware接口。這將導(dǎo)致應(yīng)用程序上下文通過 setter 注入,并允許您訪問 Spring 生態(tài)系統(tǒng)的其余部分。
然后你就可以打電話了applicationContext.getBean(MyMapper.class);
。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
對(duì)MyMapper類進(jìn)行@Component注解。這意味著當(dāng)使用基于注解的配置和類路徑掃描時(shí),Spring框架將自動(dòng)檢測(cè)這些類進(jìn)行依賴注入。

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
MyMapper 這個(gè)類沒有在 IOC 中注冊(cè)為 bean。首先使用@Component或XML文件將MyMapper類注冊(cè)為bean然后運(yùn)行
添加回答
舉報(bào)