티스토리 뷰

Spring

커맨드 객체란?

Xion 2020. 7. 25. 14:39

지난번에 @RequestParam으로 값을 많이 바인딩 시키면 코드가 지저분해지는 경우가 있을텐데

이번에는 커맨드객체를 활용하여 코드 가독성을 조금 더 높여보도록한다 !

 

웹 프로젝트 개발 시 "인쇄하기"라는 기능이 있어서 다른 view.jsp 에서 값을 컨트롤러를 타야 하는 경우가 있었는데

이럴때 model에 값을 엄청 많이 binding 시켜줬던 기억이있다.

 

이제는 Command 객체를 활용하여 이러한 경우를 대비해 볼 것이다. !

 

회사에서 작성했던 코드

@GetMapping("/print")
public void testMethod(@Request Param . . . (수만은 RequestParam이 적히고) ){

		
        model.addattrubute("사용할 data들 ", ... );
        model.addattrubute("사용할 data들 ", ... );
        model.addattrubute("사용할 data들 ", ... );
        model.addattrubute("사용할 data들 ", ... );
       
     }

 

| 커맨드 객체란?

Command 객체를 활용한 코드

별도의 Class를 만들어서 값을 binding 받을 class 즉 객체를 만들도록 한다.

 

주의할 점은 스프링에서는 이러한 부분을 특정 데이터모델을 만들어 키 값과 변수명을 동일하게 한다면 

AutoParsing되어 데이터를 손쉽게 사용할 수 있다.

이를 "커맨드 객체"라고 한다.

 

커맨드 객체를 활용한 data mapping방법

//사용할 변수와 키값이 동일한 객체 선언
@Getter
@Setter
public class {

	
    private ~~~ 
	private ~~~
    private ~~~
    private ~~~
    private ~~~

	}

 

@RequestMapping("/print/Schedule07")
public String schedule(SchedultPrint scprint,Model model){

		//이렇게 설정하면 많은 model을 명시할 필요가 없음.
		model.addattribute("printSc",scprint);
        
		return "schedule/printSchedule";
}

 

위처럼 객체 class를 만들고 해당 객체에 타입과 변수명을 일치시켜 

Controller에서 그 객체를 사용하고 Model에 담아 뿌리는것이다.

이러면 훨씬 더 코드의 가독성도 올라가게 되며 간단명료해진다.

 

화면에서는 el태그로 값을 뿌리기만 하면 된다

${printSc. ~~~ }

'Spring' 카테고리의 다른 글

메시지 컨버터란?  (0) 2020.07.25
@RequestMapping의 produces,Content-Type,Consumes란?  (1) 2020.07.25
@RequestParam과 @PathVariable?  (0) 2020.07.25
[Spring]ResponseEntity  (0) 2020.03.11
[Spring]@Autowired와 @AllArgsConstructor의 차이  (0) 2020.03.11