9. 생성자 주입 방식을 사용해 의존성을 제거하는 방법을 살펴보자. 컨트롤러에서 생성자 주입 방식을 사용해 InfoService 클래스를 SingletonDemoController 컨트롤러에 주입시킨다. 읽기 전용 필드에 값을 반환하고 새롭게 만든 ConstructorInjectionDemo 액션 메서드에서 이 값을 사용해 이를 뷰 페이지에 전달한다(다음 코드의 _svc 필드는 반드시 readonly일 필요는 없다).
▼ Controllers/SingletonDemoController.cs
using DotNetNote.Services; using Microsoft.AspNetCore.Mvc; namespace DotNetNote.Controllers { public class SingletonDemoController : Controller { private readonly InfoService _svc; public SingletonDemoController(InfoService svc) { _svc = svc; } public IActionResult ConstructorInjectionDemo() {
ViewData[“Url”] = _svc.GetUrl(); return View(“Index”); } public IActionResult Index() { ViewData[“Url”] = “www.gilbut.co.kr”; return View(); } public IActionResult InfoServiceDemo() { InfoService svc = new InfoService(); ViewData[“Url”] = svc.GetUrl(); return View(“Index”); } } }