问题:ssm项目中,spring采用@Autowired或@Resource引入mapper,报空指针。
问题原因:在使用Spring进行自动注入的过程中,只会对通过读取Spring的配置文件或者配置类后产生的实例进行自动注入。
手动new出来的实例是无法获得在Spring中注册过得实例,这是 因为手动new 的实例并不是Spring 在初始化过程中注册的实例。
解决:读取Spring的配置文件,用@Autowired和@Resource来实现,不可用手动实例化 new来实现。
将启动类中引用消费者类的方法,将new 改为@Autowired
案例描述:启动类(InitMqOrderRecv )中引用到了消费者类(MQOrderOverTimeRecv )中的方法。消费者类中@Autowired引用了mapper层。启动类运行时,消费者类中的mapper层类报空指针异常。
代码:
InitMqOrderRecv :启动类
@Component
public class InitMqOrderRecv {
private static final Logger log= LoggerFactory.getLogger(InitMqOrderRecv.class);
@PostConstruct
public void initMqOrderRecv(){
/*************