본문 바로가기
백엔드/스프링 프레임워크 단어정리

Spring Framework / Model 역할

by maverick11471 2024. 7. 17.

예시)

 - Controller

@Controller
@RequestMapping("/board")
public class BoardController {
    private BoardService boardService;
    private ApplicationContext applicationContext;

    @Autowired
    public BoardController(ApplicationContext applicationContext) {
        this.applicationContext = applicationContext;
    }

    @GetMapping("/free-detail.do")
    public String freeDetailView(BoardDto boardDto, Model model) {
		// Spring 애플리케이션 컨텍스트에서 BoardService 인터페이스의 구현체인 
        // freeBoardServiceImpl을 가져와 boardService 변수에 할당하는 역할을 합니다.

		// Spring 애플리케이션 컨텍스트란?
        // Spring 프레임워크의 핵심 개념 중 하나입니다. 
        // 이것은 애플리케이션 내에서 Bean(객체)의 생성, 관리, 의존성 주입 등을 
        // 담당하는 중앙 컨테이너
        boardService = applicationContext.getBean("freeBoardServiceImpl", BoardService.class);
		// boardDto에서 id를 가져와 freeBoard라는 이름을 지정. 이것을 model에 넣는다.
        model.addAttribute("freeBoard", boardService.getBoard(boardDto.getId()));

        return "board/free-detail";
    }

 

 - view

<div class="form-group">
    <label for="title">제목</label>
    						//freeBoard라는 Model명을 가진 컨테이너 활용
    <input type="text" class="form-control" id="title" name="title" value="${freeBoard.title}" required>
</div>

model은 Spring MVC의 Model 인터페이스를 나타냅니다. 

Model 인터페이스는 컨트롤러에서 뷰로 데이터를 전달하기 위해 사용됩니다.

Model 인터페이스의 주요 역할은 다음과 같습니다:

컨트롤러에서 생성한 데이터(객체, 값 등)를 뷰에 전달할 수 있게 해줍니다.
뷰에서 해당 데이터를 사용할 수 있도록 합니다.
구체적으로 이 코드에서는 다음과 같이 model이 사용되고 있습니다:

이 코드에서 boardService = applicationContext.getBean("freeBoardServiceImpl", BoardService.class); 부분은 Spring 애플리케이션 컨텍스트에서 BoardService 인터페이스의 구현체인 freeBoardServiceImpl을 가져와 boardService 변수에 할당하는 역할을 합니다.

 

boardService.getBoard(boardDto.getId()) 메서드를 호출하여 얻은 게시글 데이터를 "freeBoard" 라는 이름으로 model에 추가합니다.
이렇게 추가된 데이터는 뷰 템플릿(예: JSP)에서 ${freeBoard} 와 같이 사용할 수 있게 됩니다.
즉, 컨트롤러에서 생성된 데이터를 model에 담아 뷰로 전달함으로써, 뷰 템플릿에서 해당 데이터를 사용할 수 있게 해주는 것이 model의 주요 역할입니다.