본문 바로가기

Java/Spring

(8)
[Spring] @RestController의 파라미터(@PathVariable, @RequestBody) - @RestController는 기존 @Controller에서 사용하던 일반적인 타입이나 사용자가 정의한 타입(클래스)을 사용한다. - 여기에 추가로 몇 가지 어노테이션을 이용하는 경우가 있다. ∙@PathVariable : 일반 컨트롤러에서도 사용이 가능하지만 REST 방식에서 자주 사용된다. URL 경로의 일부를 파라미터로 사용할 떄 이용 ∙@RequestBody : JSON 데이터를 원하는 타입의 객체로 변환해야 하는 경우에 주로 사용 @PathVariable - REST 방식에서는 URL 내에 최대한 많은 정보를 담으려고 노력한다. - 예전에는 '?' 뒤에 추가되는 쿼리 스트링(query string)이라는 형태로 파라미터를 이용해서 전달되던 데이터들이 REST 방식에서의 경로의 일부로 차용되는..
[Spring] 스프링 MVC의 기본 구조 - 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 '코어'라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되었다. - 서브 프로젝트라는 의미를 개발자의 입장에서 가장 쉽게 이해할 수 있는 방법은 '별도의 설정이 존재할 수 있다'라는 개념이다. - Spring Legacy Project로 생성한 예제의 경우에도 servlet-context.xml과 root-context.xml로 설정 파일이 분리된 것을 볼 수 있다. - 스프링 MVC가 서브 프로젝트 이므로 구성 방식이나 설정 역시 조금 다르다. 스프링 MVC 프로젝트의 내부 구조 - 스프링 MVC 프로젝트를 구성해서 사용한다는 의미는 내부적으로 root-context.xml로 사용하는 일반 ..
[Spring] 페이징 처리(dto, mapper) - MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인뷰를 이용하는 SQL을 작성하고, 필요한 파라미터를 지정하는 방식으로 페이징 처리를 할 수 있다. - 페이징 처리를 위해서 SQL을 실행할 때 몇 가지 파라미터가 필요하다. (페이지번호, 한페이지당 몇 개의 데이터를 보여줄 것인지) * XML의 CDATA 섹션은 XML에서 사용할 수 없는 부등호를 사용하기 위함인데, XML을 사용할 경우에는 ''는 태그로 인식하기 때문에 이로 인해 생기는 문제를 막기 위함이다. (< 나 &gy; 와 같은 특수 문자를 사용할 수도 있다.) 페이징 화면처리 ✓ 페이징 처리할 때 필요한 정보들 ∙ 현재 페이지 번호(page) ∙ 이전과 다음으로 이동 가능한 링크의 표시 여부(PREV, NEXT) ∙ 화면(view..
[Spring] @RestController의 반환 타입 @RestController는 메서드의 반환 타입으로 사용자가 정의한 클래스 타입을 사용할 수 있고, 이를 JSON이나 XML로 자동으로 처리가 가능하다. 1) 단순 문자열 반환 - @Controller는 문자열을 반환하는 경우에는 JSP파일의 이름으로 처리하지만, @RestController의 경우에는 순수한 데이터가 된다. - @GetMapping에 사용된 produces 속성은 해당 메서드가 생상하는 MIME타입을 의미한다. 문자열로 직접 지정할 수도 있고, 메서드 내의 MediaType이라는 클래스를 이용할 수도 있다. MIME이란 무엇인가? MIME이란 무엇인가? MIME이란? Multipurpose Internet Mail Extensions의 약자로 간략히 말씀을 드리면 파일 변환을 뜻한다고..
[Spring] REST + @RestController 정리, 설정 REST(Representational State Transfer) - 하나의 URI(Uniform Resource Identifier)는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개념에 전송방식을 결합해서 원하는 작업을 지정한다. - 예를 들어 '/board/123'은 게시물 중에서 123번이라는 고유한 의미를 가지도록 설계하고, 이에 대한 처리는 GET, POST 방식과 같이 추가적인 정보를 통해서 결정한다. ✓ REST 방식의 데이터 처리를 위한 여러 종류의 어노테이션 어노테이션 기능 @RestController Controller가 REST 방식을 처리하기 위한 것임을 명시 @ResponseBody 일반적인 JSP와 같은 뷰로 전달되는 게 아니라 데이터 자체를 전달하기 위한 ..
[Spring] Transaction 정리, 설정 Transaction - 비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 '트랜잭션(Transaction)'이라는 용어를 사용한다. - 사전적인 의미로 트랜잭션은 '거래'라는 뜻을 가지지만, 현실적으로는 '한 번에 이루어지는 작업의 단위'를 트랜잭션으로 간주한다. ACID원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리되어야 한다. 좀 더 쉽게 말하자면 어떤 트랜잭션이 A와 B로 구성된다면 항상 A, B로 구성된다면 항상 A, B의 처리 결과는 동일 결과이어야 한다. 즉, A는 성공했지만, B는 실패할 경우 A, B 모두 원래 상태로 되돌려져야 한다. 어떤 작업이 잘못되는 경우 모든 것은 다시 원점으로 돌아가야 한다. 일관성(Consistency) 트랜잭션이 성공했다면..
[Spring] AOP 정리 AOP(Asepect-Oriented Programming) - '관점 지향 프로그래밍' 이라는 의미로 번역되는데, 객체지향에서 특정 비즈니스 로직에 걸림돌이 되는 공통 로직을 제거할 수 있는 방법을 제공한다. - AOP를 적용하면 기존의 코드에 첨삭없이, 메서드의 호출 이전 혹은 이후에 필요한 로직을 수행하는 방법을 제공한다. - AOP는 흔히 '관점 지향 프로그래밍'이라는 용어로 번역되는데, 이때 '관점(Aspect)'이라는 용어는 개발자들에게 '관심사(concern)'이라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있는데, 코드를 작성하면서 염두에 두는 일들을 주로 다음과 같다. ∙ 파라미터가 올바르게 들어왔을까? ∙ 이 작업을 하는 사용자가 적절..
[Spring] Controller의 Exception처리, @ControllerAdvice - Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다. - 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다. ∙@ExceptionHandler와 @ControllerAdvice를 이용한 처리 ∙@ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice - AOP(Aspect-Oriented-Programming)를 이용하는 방식이다. - Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지만, AOP방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControolerAdvice 어노테이션을 이용해서 분리하는 방식이다. [1..