Java/spring

    4/19 정리

    Annotation 컨트롤러에 붙여야 하는 것 - @RestController(@Controller + @ResponseBody), @RequestMapping(‘URI’) 응답에 null값을 포함하지 않으려면? - @JsonInclude(JsonInclude.Include.NON_NULL) 이외에도 다양한 속성을 추가해줄 수 있다. @NonNull : 클래스 속성에 null값 불가능 Response 내려주기 1. plain text : 단순 텍스트 리턴, 거의 안씀 2. json RequestBody로 객체 형태를 받으면 request -> object mapper -> 객체로 변환된다. 마찬가지로 Response로 객체를 리턴하면 객체 -> object mapper -> json -> response..

    Spring 계층 구조

    스프링은 여러 가지 계층을 갖는 계층 구조로 이루어져 있다. 각 계층들은 웹을 구현하기 위해 자신이 맡은 역할을 수행하며, 아래 그림과 같은 구조로 구성되어 있다. 각 계층들의 역할을 하나씩 살펴보자. Web Layer 흔히 사용하는 컨트롤러(@Controller)나 JSP와 같은 뷰 템플릿 영역이다. 이외에도 필터(@Filter), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice) 등 외부 요청과 응답에 대한 전반적인 영역을 다룬다. Service Layer @Service 어노테이션을 사용하는 영역이다. Controller와 DAO의 중간 영역에서 사용되며, @Transactional이 사용되어야 하는 영역이다. 트랜잭션, 도메인 간의 순서를 보장해준다. Repository Layer ..

    Spring batch - 1. 기본 개념

    배치 프로그램 배치란, 데이터를 실시간으로 처리하지 않고 요청들을 한꺼번에 모아서 처리하는 방식이다. 이러한 배치 프로그램은 아래와 같은 특징들을 가지고 있다. 대량의 데이터를 처리한다. 사용자의 개입 없이 자동으로 동작한다. 유효하지 않은 데이터가 입력되었을 때도 동작을 중단하지 않아야 한다. 프로그램이 실행되는 시간을 정할 수 있다. 요청들을 일괄적으로 처리한다. 그렇다면, 이러한 배치 프로그램은 왜 써야하는걸까? 예를 들어, 매일 한 번씩 전날의 데이터를 집계한다고 해보자. 하루에 한번밖에 사용되지 않는 기능을 위한 API를 만드는 것은 낭비가 될 수 있고, 실수로 이 API를 하루에 두 번 이상 실행할 수도 있다. 또한 데이터의 양이 매우 많을 것이므로 집계가 중간에 실패할 경우 다시 처음부터 집..