依赖性注射的整个思想是而不是 。 在注射的情况下,这些依赖者应当只是“隐蔽”,而无需任何要求(控制转移)。 在使用<代码>ApplicationContext#getBean(String)时,你仍然要求依赖(a la Service Locator)并且现在要求将控制转换为而不是(即使这允许你轻易改变执行)。
因此,你应使用固定式或建筑式注射器制作<代码>MyController的星座和注射器。
public class MyController {
private MyService myService;
public MyController(MyService aService) { // constructor based injection
this.myService = aService;
}
public void setMyService(MySerice aService) { // setter based injection
this.myService = aService;
}
@Autowired
public void setMyService(MyService aService) { // autowired by Spring
this.myService = aService;
}
@RequestMapping("/blah")
public String someAction()
{
// do something here
myService.foo();
return "someView";
}
}
并且把春天混为一谈。