Spring Framework でAutowiredアノテーションのクラスのインジェクションした要素がNullになるとき
Autowiredを利用するには、サービスを呼び出すコントローラクラスでもAutowiredを利用して、サービスクラスをDIしておく必要があった。
・サービスクラスをnewして利用すると、サービスクラスのAutowiredが有効にならない。
// ーーーーー失敗
@Service
public class ServiceA {
@Autowired
private Obj obj; // Nullになるのは
}
@Controller
public class ControllerA {
@RequestMapping(value = "/a", method = GET)
public String View(Model model){
ServiceA service = new ServiceA(); // Newしているから
return "/a";
}
}
// ーーーーー失敗
// ーーーーー成功
@Controller
public class ControllerA {
@Autowired
private ServiceA service; //コントローラクラスでもAutowired
}
@Service
public class serviceA {
@Autowired
private Obj obj; // Nullにならない
}
// ーーーーー成功