1、有问题的写法 :这种写法会导致 proMapper为null 。控制台报空指针异常
@Component
public class Test {
@Autowired
private ProMapper proMapper;
public void a(){
DataGridResidentDO s = proMapper.getDataGridResident("72398e73-e122-4cd3-a381-2d8342960170", "才存村网格");
System.out.println();
}
}
2、正确的写法
@Component
public class Test {
private static ProMapper proMapper;
@Autowired
public void setRepository(ProMapper repository) {
Test.proMapper = repository;
}
public void a(){
DataGridResidentDO s = proMapper.getDataGridResident("72398e73-e122-4cd3-a381-2d8342960170", "才存村网格");
System.out.println();
}
}
注:以上为博主的测试类,命名、书写不规范。需按照实际进行修改
总结:在tomcat启动的线程中如何使用spring容器提供的@Autowired的单例bean呢?
如果不是static,这个repository就是null
在线程中也没有办法从spring容器中取到这个bean,所以只能把这个bean设置为static,这样单例bean就脱离了spring容器的限制