본문 바로가기

Web/Spring

(4)
스프링 트랜잭션 비즈니스에서는 쪼개질 수 없는 하나의 단위 작업을 말할 때 '트랜잭션(Transaction)'이라는 용어를 사용한다. 사전적인 의미로 트랜잭션은 '거래'라는 뜻을 가지지만, 현실적으로는 '한 번에 이루어지는 작업의 단위'를 트랜잭션으로 간주한다. '트랜잭션으로 관리한다' 혹은 '트랜잭션으로 묶는다'는 ㅍ현은 프로그래밍에서는 'AND' 연산과 유사하다. 영소계층에서 '출금'과 '입금'은 각각 데이터베이스와 연결을 맺고 처리하는데 하나의 트랜잭션으로 처리해야 할 경우에는 한쪽이 잘못되는 경우에 이미 성공한 작업까지 다시 원상태로 복구되어야 한다. 스프링은 이러한 트랜잭션 처리를 간단히 XML 설정을 이용하거나, 어노테이션 처리만으로 할 수 있다. 데이터베이스 설계와 트랜잭션 데이터베이스의 정규화가 잘 되어있..
AOP '관점 지향 프로그래밍' '관점' 이라는 용어는 개발자들에게는 '관심사(concern)'라는 말로 통용된다. '관심사'는 개발 시 필요한 고민이나 염두에 두어야 하는 일이라고 생각할 수 있는데, 코드를 작성하면서 염두에 두는 일들은 주로 다음과 같다. 파라미터가 올바르게 들어왔을까? 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인가? 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는가? 위와 같은 고민들은 '핵심로직'은 아니지만, 코드를 온전하게 만들기 위해서 필요한 고민들인데 전통적인 방식에서는 개발자가 반복적으로 이러한 고민을 코드에 반영하게 된다. AOP가 추구하는 것은 '관심사의 분리(separate concerns)'이다. AOP는 개발자가 염두에 두어야 하는 일들은 별도의 '..
Rest 필요한 데이터만 전송한다. @RestController REST방식에서 가장 먼저 기억해야 하는 점은 서버에서 전송하는 것이 순수한 데이터라는 점이다. 기본의 컨트롤러에서 Model에 데이터를 담아서 JSP 등과 같은 뷰로 전달하는 방식이 아니므로 기존의 Controller와는 조금 다르게 동작한다. @RestController 이전에는 @Controller와 메서드 선언부에 @ResponseBody를 이용해서 동일한 결과를 만들 수 있다. 단순 문자열 반환 @RestController는 jsp와 달리 순수한 데이터를 반환하는 형태이므로 다양한 포맷의 데이터를 전송할 수 있다. 주로 일반 문자열이나 JSON, XML등을 사용한다. 객체의 반환 객체를 반환하는 작업은 JSON이나 XML을 이용한다. Res..
스프링 (Spring) 특징 POJO 기반의 구성 의존성 주입(DI)을 통한 객체 간의 관계 구성 관점 지향 프로그래밍 AOP(Aspect-Oriented_Programming) 지원 편리한 MVC 구조 WAS의 종속적이지 않은 개발 환경 POJO 기반의 구성 코드를 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않다는 것을 의미함. 개발자는 가장 일반적인 형태로 코드를 작성하고 실행할 수 있기 때문에 생산성에서도 유리하고, 코드에 대한 테스트 작업 역시 좀 더 유연하게 할 수 있다는 장점이 생긴다. 의존성 주입과 스프링 의존성이란는 것은 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미한다. 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미한다. 주입은 말 그대로 외부..