原因:
SprinBoot只能在已经注册的类之间进行自动装箱操作,自定义类没有注册进SpringBoot,所以在自定义类中想要调用Mapper或者Server接口只能通过新建一个SpringBean工厂类进行生成。
方法:
1、这时候我们就要手动实现这个功能,写个BeanUtils 类 实现ApplicationContextAware接口
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class BeanUtils implements ApplicationContextAware {
protected static ApplicationContext applicationContext ;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
if (applicationContext == null) {
applicationContext = arg0;
}
}
public static Object getBean(String name) {
//name表示其他要注入的注解name名
return applicationContext.getBean(name);
}
/**
* 拿到ApplicationContext对象实例后就可以手动获取Bean的注入实例对象
*/
public static <T> T getBean(Class<T> clazz) {
return applicationContext.getBean(clazz);
}
}
2、使用时,在想要自动注入的类中直接使用以下方法进行获取.class
/**
* 由于不能用@Autowired进行注入,则使用这种手动注入方式
*/
private RedisUtils redisUtils = BeanUtils.getBean(RedisUtils.class);