场景:UtilA通过new的方式创建UtilB对象,调用UtilB中的testB方法。testB中使用注入的testMapper。
此时,testMapper为null。程序执行到testMapper.delete(1)会出现空指针异常。
public class UtilA {
public void testA() {
UtilB utilB = new UtilB();
utilB.testB();
}
}
public class UtilB {
@Autowired
private TestMapper testMapper;
public void testB() {
testMapper.delete(1);
}
}
@Mapper
public interface TestMapper {
void delete(Integer id);
}
解决上面的问题有两种方式
一:将UtilB注入到spring中,通过依赖注入方式调用
public class UtilA {
@Autowired
private UtilB utilB;
public void testA() {
utilB.testB();
}
}
二:通过ApplicationContext方式
@SpringBootApplication
public class TestApplication {
public static ApplicationContext applicationContext;
public static void main(String[] args) {
applicationContext = SpringApplication.run(TestApplication.class);
}
}
public class UtilA {
public static void testA() {
ApplicationContext applicationContext = TestApplication.applicationContext;
UtilB utilB = applicationContext.getBean(UtilB.class);
utilB.testB();
}
}



