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

윤토벤님의 프로필 이미지
윤토벤

작성한 질문수

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

ModelView

작성

·

304

0

안녕하세요. 복습하다가 궁금한 점이 생겨서요.

public class ModelView

필드에 private<String, Object> model = new HashMap<>();

으로 선언이 되어 있는데

컨트롤러에서 ModelView mv = new ModelView("save-result");

mv.getModel().put("member", member);

getModel()메서드가 model 객체를 반환하는데 이 model 객체는 private이므로 put을 못하지 않나요??

답변 1

0

안녕하세요. 윤토벤님, 공식 서포터즈 OMG입니다.
private 이라서 put을 못한다는 질문 내용으로 보아 접근제어자 관련 의문이신 것 같습니다.

직접 확인해보셔도 좋을 것 같고, 테스트로도 확인해볼 수 있습니다.

 

package test;

import java.util.HashMap;
import java.util.Map;

public class ModelView {
    private Map<String, Object> model = new HashMap<>();
    private String viewName;

    public ModelView(String viewName) {
        this.viewName = viewName;
    }

    public Map<String, Object> getModel() {
        return model;
    }

    public void setModel(Map<String, Object> model) {
        this.model = model;
    }
}

 

package test;

import org.assertj.core.api.Assertions;
import org.junit.Test;

import static org.junit.Assert.*;

public class ModelViewTest {
    @Test
    public void test() {
        Member member = new Member();
        ModelView mv = new ModelView("test");
        mv.getModel().put("member", member);
        Assertions.assertThat(mv.getModel().get("member")).isNotNull();
    }
    static class Member {

    }
}



감사합니다.

윤토벤님의 프로필 이미지
윤토벤

작성한 질문수

질문하기