Autowired所谓的按类型装配并没有向我们想的那么简单,
今天看视频的时候,发现在控制层的Userservice接口竟然能够自动注入,之前的使用都是直接用非抽象。
比如:
Person person = applicationContext.getBean(Person .class);
这突然接口也可以自动注入了,很懵逼。
所以我猜测, applicationContext.getBean(UserService.class),对于UserService.class这个类型,在spring框架中装配流程大概是:
将bean容器中的所有对象用instanceof强转后,如果相等Userservice类型,则装配。
public interface UserService {
public List<User> queryAll();
}
@Service
public class UserserviceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List<User> queryAll() {
return userDao.findAll();
}
}
controll层springmvc
@Controller("testController")
@RequestMapping("/test")//请求路径
public class TestController {
@Autowired
private UserService userService;
@ResponseBody
@RequestMapping("/queryAll")
public Object findAll(){
return userService.queryAll();
}
}
结果是: