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にならない
}
// ーーーーー成功