카테고리 없음

Controller - Service (객체 생성, 호출)

Tech_JINI 2025. 5. 12. 10:45
@RestController
//@Controller
//@ResponseBody
public class ProductController {
    // 상품 조회, 상품 등록

    ProductController(){
        System.out.println("스프링이 객체 생성하는지 확인");
    }

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String getProduct(){
        ProductService productService = new ProductService();
        return productService.getProduct();
    }
}

⚠️ 문제 발견 !

getProduct 메소드가 호출될 때마다 새로운 Service 객체가 생성된다.

이 메서드 밖에선 Service를 못 쓰는 상황

 

다른 메서드들도 Service에서 일을 시킬 것임

-> 메서드 안에서 선언하지 말고, 필드로 올리자

 

 

public class ProductController {
    // 상품 조회, 상품 등록
    private ProductService productService = new ProductService();

    ProductController(){
        System.out.println("스프링이 객체 생성하는지 확인");
    }

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String getProduct(){
        return productService.getProduct();
    }
}

😅 마지막 아쉬운 점

지금 직접 객체를 생성/관리하고 있다.-> 스프링에게 맡기자 (IoC)

 

 

 

@RestController
//@Controller
//@ResponseBody
public class ProductController {
    // 상품 조회, 상품 등록
    private ProductService productService;

    ProductController(){
        System.out.println("스프링이 객체 생성하는지 확인");
    }

    @RequestMapping(value = "", method = RequestMethod.GET)
    public String getProduct(){
        return productService.getProduct();
    }
}
@Component
public class ProductService {
    public String getProduct(){
        return "NoteBook!";
    }
}

 

Controller에서 Service 객체를 사용하고 싶음 -> 스프링이 객체를 관리 중이니, 스프링에게 달라고 요청해야 한다. (DI 요청)

 

 

 

Spring아 객체 좀 줘

= @Autowired

public class ProductController {
    // 상품 조회, 상품 등록

    @Autowired
    private ProductService productService;