• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문이 있습니다.

21.03.18 22:25 작성 조회수 121

0

질문1

아래 코드에서 생성자의 역할은 무엇일까요?    스프링에서 service 객체를 자동으로 매핑 해주는게 맞나요?

질문2

@RestController 의 역할에 대해서 설명을 좀 해주시면 감사요 !!

@RestController
public class UserController {
    private UserDaoService service;

    public UserController(UserDaoService service) {
        this.service = service;
    }

답변 2

·

답변을 작성해보세요.

1

안녕하세요, 이도원

문의하신 질문에 대한 답변 드립니다.

답변1) 위 코드에서 생성자의 역할은, UserDaoService에 대한 인스턴스를 주입하기 위합니다. 주입할 수 있는 3가지 방법(Field, Setter, 생성자) 중 하나입니다. 생성자가 하나인 경우에는 @Autowired를 붙이지 않아도 되지만, 2개 이상인 경우에는 어노테이션을 붙여주어야 합니다. 생성자를 통해 주입하게 되면 객체를 생성하지 시점에 필요한 인스턴스를 주입하며, 순환 참조를 방지 할 수 있습니다. 

답변2) RestController는 Spring MVC에서 사용되는 Controller에 @ResponseBody가 포함된 컨트롤러입니다. REST 방식으로 반환 데이터를 전달할 때 사용되며, 반환 값으로 JSON(또는 XML) 형식을 사용합니다.  ModelAndView와 같이 화면 UI를 가지지 않는 컨트롤러에서 JSON 포맷의 반환값을 사용할 때 주로 사용하게 됩니다. 

감사합니다. 

0

terecal님의 프로필

terecal

질문자

2021.03.21

정확하고 상세한 답변 감사합니다.

질문) 생성자 주입시 @autowired 를  사용하지 않은 이유, 생성자를 통한 객체 자동 주입을 사용한 이유?

답변)  위 코드에서 생성자의 역할은, UserDaoService에 대한 인스턴스를 주입하기 위합니다. 주입할 수 있는 3가지 방법(Field, Setter, 생성자) 중 하나입니다. 생성자가 하나인 경우에는 @Autowired를 붙이지 않아도 되지만, 2개 이상인 경우에는 어노테이션을 붙여주어야 합니다. 생성자를 통해 주입하게 되면 객체를 생성하지 시점에 필요한 인스턴스를 주입하며, 순환 참조를 방지 할 수 있습니다.

질문) @RestController 를  적용한 이유?

답변) RestController는 Spring MVC에서 사용되는 Controller에 @ResponseBody가 포함된 컨트롤러입니다. REST 방식으로 반환 데이터를 전달할 때 사용되며, 반환 값으로 JSON(또는 XML) 형식을 사용합니다.  ModelAndView와 같이 화면 UI를 가지지 않는 컨트롤러에서 JSON 포맷의 반환값을 사용할 때 주로 사용하게 됩니다.