问题:
使用springboot在一个类中始终无法注入mapper。
SpringBoot bean无法注入的原因:
1、SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描,“Application类”是指SpringBoot项目入口类。
2、使用new的类下面的所有依赖注入都会失效。
解决方案:
我这里是原因2导致,解决方法,写一个类获取bean:
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @ClassName StaticMethodGetBean
* @Date 2020/10/10 12:00
* @Description 静态方式获取bean
*/
@Component
public class StaticMethodGetBean<T> implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
StaticMethodGetBean.applicationContext = applicationContext;
}
public static <T> T getBean(Class<T> clazz) {
return applicationContext != null?applicationContext.getBean(clazz):null;
}
}
这个类使用方法:
使用的地方:
DemoMapper demoMapper = StaticMethodGetBean.getBean(DemoMapper.class);