想整合一下mybatis和spring,讓UserMapper
可以通過spring的方式自動注入,但是不知道為什麼在下麵的代碼中通過getBean
的方式可以成功得到UserMapper
,但是通過@Autowire
的方式卻無法實現依賴注入,請問錯誤的原因可能有哪些?
public class TestSpringMybatis {
private UserMapper userMapper;
@Autowired
@Qualifier("userMapper")
public void setStudentMapper(UserMapper userMapper) {
System.out.println("setter");
this.userMapper = userMapper;
}
@Test
public void getUser() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.register(AppConfig.class);
applicationContext.refresh();
// 通过getBean的方式执行成功
UsreMapper u = (UserMapper)applicationContext.getBean("userMapper");
System.out.println(u.getById(1));
// 但是通过@Autowired自动注入的话会抛出NullPointerException,并且控制台没有输出setter
System.out.println(this.studentMapper.getById(1));
}
}
mybatis-spring文檔地址
你這個單元測速的類,應該沒放入Spring來管理吧
TestSpringMybatis 加入spring @Component
報什麼錯,TestSpringMybatis 這個類別是 spring 容器裡面的嗎? @Resource?
@Autowired
private userMapper mapper;
接著就可以在這個類別裡面直接用mapper了,不用再去set