인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

창신동 장첸님의 프로필 이미지
창신동 장첸

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

ModelView 질문

해결된 질문

작성

·

30

0

image.png

 

안녕하세요~ mvc에 도입된 ModelView클래스에 질문있습니다.

위 코드처럼 필드에 바로 HashMap 구현객체를 할당한 것을 보실 수 있는데요.

MVC model v3 을 설명하는 강의자료에 나온 소스입니다.

 

생성자로 초기화하는 아래 코드처럼 작성해주실 것이라 기대했는데

@Data
@AllArgsConstructor
public class ModelView {
    private String viewName;
    private Map<String, Object> model;

    public ModelView(String viewName) {
        this.viewName = viewName;
        this.model = new HashMap<>();
    }
}

그렇지 않은 이유가 궁금합니다~!

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 창신동 장첸님!

ModelView 클래스에서 필드에 바로 HashMap 구현 객체를 할당한 것에 대해 궁금하셨군요. 이 부분은 코드 작성 스타일이나 설계의 차이에서 비롯될 수 있습니다.

  1. 즉시 초기화 vs 생성자 초기화:

    • 필드에서 즉시 HashMap 객체를 초기화하면, 클래스의 인스턴스가 생성되면서 필드가 자동으로 초기화됩니다. 이는 널포인트 예외를 방지할 수 있고, 매우 간단한 초기화 방식일 때 유리합니다.
    • 반면 생성자에서 초기화하면 각 생성자마다 원하는 방식으로 초기화 구문을 넣을 수 있는 유연함이 생깁니다. 단, 모든 생성자에 동일한 초기화 코드를 삽입해야 할 때 코드가 중복될 수 있습니다.
  2. 의미의 차이:

    • 필드 초기화는 해당 필드가 클래스 내에서 항상 동일한 방식으로 초기화될 것을 보장하며, 객체가 생성되는 시점에서 특정 필드에 대해 기본값을 지정하겠다는 명확한 의미를 전달합니다.
    • 생성자 초기화는 생성자 호출 과정에서 동적으로 초기화 값을 설정할 수 있으며, 초기화 과정을 더 구체적으로 제어할 수 있게 합니다.

참고하시기 위해 유사한 질문들에 대한 답변 링크를 공유합니다:
- 질문있습니다!: ModelView 클래스의 Map<String, Object> model에 대해 다룬 내용입니다.
- 질문이요..!!: ModelView 클래스의 process 메서드와 관련된 질문입니다.

질문이 해결이 되셨기를 바라며, 완벽한 답변을 제공하지 못한 것에 대해 양해 부탁드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

창신동 장첸님의 프로필 이미지
창신동 장첸

작성한 질문수

질문하기