Lombok(롬복)은 Java 라이브러리로 getter, setter, toString 등 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리이다.
Lombok은 여러가지 어노테이션을 제공하고, 이를 기반으로 코드를 컴파일과정에서 생성해 주는 방식으로 동작하는 라이브러리 즉 코딩 과정에서는 롬복과 관련된 어노테이션만 보이고 getter, setter 메서드 등은 보이지 않지만 실제로 컴파일된 결과물(.class)에는 코드가 생성되어 있다는 뜻이다
User.java
package com.example.filter.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String name;
private int age;
}
ApiController.java
package com.example.filter.controller;
import com.example.filter.dto.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j; // system info 가 아닌 log를 사용해 정보를 출력할 수 있다.
@Slf4j // System.out.println(); 으로 출력하지 않고 log로 찍어낼 수 있다.
@RestController
@RequestMapping("/api/user")
public class ApiController {
@PostMapping("")
public User user(@RequestBody User user) {
log.info("User : {}, {}", user, user);
return user;
}
}
이클립스/STS4의 Gradle Dependencies 에서 lombok-1.18.24
.jar 파일을 찾는다.
lombok-1.18.8.jar 파일을 오른쪽 마우스 클릭 → run as → java application -> 프로세스 진행
lombok jar 파일이 실행되며 install 창이 표시된다.
specify location → 이클립스 위치의 eclipse.ini 를 선택 -> install/update 진행
install 이 정상적으로 실행 된다.
이클립스로 돌아와 프로젝트를 clean → restart 한다.
log 관련 에러가 사라진다.
(출처, https://parinote.tistory.com/23)
Filter란 WEB Application 에서 관리되는 영역으로 Spring Boot Framework 에서 Client로 부터 오는 요청/응답에 대해 최초/최종 단계의 위치에 존재하며 이를 통해 요청/응답의 정보를 변경하거나 Spring에 의해 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인 할 수 있다.
유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있다.
주로 Spring Framework에서는 request / response Logging 용도로 활용 하거나, 인증과 관련된 Logic들을 해당 Filter에서 처리한다.
이를 선/후 처리함으로써, Service business logic과 분리 시킨다.
Interceptor란 Filter와 매우 유사한 형태로 존재하나, 차이점은 Spring Context에 등록된다.
AOP와 유사한 기능을 제공 할 수 있으며, 주로 인증단계를 처리하거나 Logging을 하는데 사용한다.
이를 선/후 처리함으로써, Service business logic과 분리시킨다.