yahayaha

Deprecated MediaType.APPLICATION_JSON_UTF8 해결 본문

오류 해결 노트

Deprecated MediaType.APPLICATION_JSON_UTF8 해결

yaha 2024. 2. 8. 15:50

게시판 댓글 작업을 하는 도중 코드에서 뭔가 이상한게 발견됨.

 

@GetMapping(value = "/page/{bno}/{page}",
			produces = {
			MediaType.APPLICATION_XML_VALUE,
			MediaType.APPLICATION_JSON_UTF8_VALUE })
	public ResponseEntity<List<ReplyVO>> getList(
			@PathVariable("page") int page,
			@PathVariable("bno") Long bno){
		log.info("getList............");
		
		Criteria cri = new Criteria(page,10);
		
		log.info(cri);
		return new ResponseEntity<>(service.getList(cri, bno), HttpStatus.OK);
	}

 

문제가 없어보이지만 sts환경에서 확인하면.

 

노란색 밑줄이 생기면서  The field MediaType.APPLICATION_JSON_UTF8_VALUE is deprecated 라는 문구가 나옴. 

 

꼴보기 싫어서 구글링 하기로 결정. 그러다 찾게 된게 

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/MediaType.html#APPLICATION_JSON_UTF8_VALUE

 

MediaType (Spring Framework 6.1.3 API)

TEXT_MARKDOWN public static final MediaType TEXT_MARKDOWN Public constant media type for text/markdown. Since: 4.3

docs.spring.io

 

어떤 이유였냐면 크롬이나 다른 주요 브라우저가 UTF-8 매개변수 없이 스펙을 준수하고, 이제 UTF-8 특수 문자를 정확하게 해석하기 때문에 APPLICATION_JSON_UTF8_VALUE 보다는 APPLICATION_JSON를 사용하면 된다고 한다.

 

그리서 코드를 수정.

 

@GetMapping(value = "/pages/{bno}/{page}",
			produces = {
			MediaType.APPLICATION_XML_VALUE,
			MediaType.APPLICATION_JSON_VALUE })
	public ResponseEntity<List<ReplyVO>> getList(
			@PathVariable("page") int page,
			@PathVariable("bno") Long bno){
		log.info("getList............");
		
		Criteria cri = new Criteria(page,10);
		
		log.info(cri);
		return new ResponseEntity<>(service.getList(cri, bno), HttpStatus.OK);
	}

 

그냥 밑줄 그은게 왜 그어졌지 꼴보기 싫네 하고 해결하려고 구글링 해본게 생각지도 못한 수확이 되었다.