카테고리 없음
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;