inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 프레임워크 핵심 기술

JSON 객체 배열을 스프링 컨트롤러에서 받을 수 있는 가장 합리적인 방법을 알고 싶습니다!

640

team.tfd

작성한 질문수 1

0

데이터 예시
{ 'testList' : [ { 'test01' : '000', 'test02' : '001' }, { 'test01' : '003', 'test02' : '004' } ] }

해당 데이터를 스프링 컨트롤러로 전달 시 (ajax 요청) 가장 합리적으로 받을 수 있는 방법이 궁금합니다.

1. @RequestBody 사용

- jackson 메시지 컨버터가 사용되기에 문제 없이 잘 동작하는 것 같습니다.-


2. @ModelAttriute 사용
- 스크립트 단에서 testList[0].test01 형태로 직접 리스트의 인덱스에 접근해서 넘기지 않을 경우, 컨버팅 에러 발생
- 데이터 예시의 형태를 직접 testList[0].test01 형태로 바꿔주는 작업을 스크립트 단에서 처리해야 하는게 맞을까요? 
(굉장히 비효율적이라는 생각이 듭니다.)

3.  스프링 컨버터 추가
- 직접 커스텀 컨버터 작성 후 등록


추가적으로  용어에 대한 정확한 이해가 되지 않아 질문드립니다.

컨버터를 등록한다라는 것이, 기존 HTTP 메시지 컨버터에 추가적으로 새로운 컨버터를 등록한다는 의미인가요?

그리고 핸들러 메소드가 이러한 컨버터들을 이용하여 객체 또는 필드에 매핑하는 것인가요?

정확한 개념이 잡히지 않으니, 응용하기가 조금 어렵습니다.

긴 질문 읽어주셔서 감사합니다!

java spring

답변 1

0

백기선

데이터를 어떤식으로 보내오느냐에 따라 컨트롤러에서 받는 방법이 달라지는건데, 자세한건 스프링 MVC를 학습하셔야 합니다. 댓글로 설명할 수 있는 분량이 아니라서요. 보통은 요청 본문에 JSON을 그대로 보내는데 그 경우에 1번이 가장 합리적인 선택입니다.

그리고 컨버터는 여러 경우에 사용이 되는데 1번의 경우처럼 요청 본문(전부다 문자열)을 특정 타입으로 변환할 때 사용하는건데, 그걸 HttpMessageConverter에 등록하는게 아니라 (그 자체도 하나의 컨버터에요 이름에서 알 수 있듯이)  스프링 MVC가 사용하는 FormatterRegistry라고 일종의 컨버터/포매터 집합인데 거기다가 추가하는걸 컨버터를 추가한다고 하는겁니다.

기본으로 여러 컨버터가 등록되어 있긴한데 그 기본 컨버터로 해결이 안되는 상황에서는 커스텀 컨버터를 만들어 추가해야겠죠.

BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?

0

381

1

프로젝트 생성에 관련한 질문

0

376

1

안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.

0

371

1

HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.

0

304

0

PropertyEditor non thread-safe 한 이유

0

491

1

빈의 초기화 시점이 궁금합니다.

0

393

1

이 강의 예제소스 없나요?

0

345

1

릴로딩 기능에 대해

0

404

1

Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다

0

612

3

IoC/DI와 POJO의 관계

1

749

2

기선님 RetentionPolicy에 대해서 질문이 있습니다.

0

291

1

안녕하세요 기선님!

3

486

3

비동기적으로 실행할때

0

313

2

"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다

0

530

4

@Autowired 로 가져오는 Bean은 ?

2

280

1

Type-Safety 의미

0

538

1

Null Point

0

318

1

WebDataBinder를 특별히 쓰는 이유가 있나요?

0

384

1

안녕하세요?

0

336

2

애노테이션이 없습니다(?)

0

279

3

코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.

0

295

2

강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?

1

1498

1

IOC컨테이너관련 질문입니다

0

244

3

인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.

0

259

1