[Java/Spring] Lombok/Filter/Interceptor

Hyeri Park·2022년 8월 3일
0

JAVA/Spring 기초

목록 보기
15/22
post-thumbnail

Lombok

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;
	}

}

@Slf4j 사용시 log cannot be resolved 에러 처리

  1. 이클립스/STS4의 Gradle Dependencies 에서 lombok-1.18.24
    .jar 파일을 찾는다.

  2. lombok-1.18.8.jar 파일을 오른쪽 마우스 클릭 → run as → java application -> 프로세스 진행

  3. lombok jar 파일이 실행되며 install 창이 표시된다.

  4. specify location → 이클립스 위치의 eclipse.ini 를 선택 -> install/update 진행

  5. install 이 정상적으로 실행 된다.

  6. 이클립스로 돌아와 프로젝트를 clean → restart 한다.

  7. log 관련 에러가 사라진다.

(출처, https://parinote.tistory.com/23)


Filter

Filter란 WEB Application 에서 관리되는 영역으로 Spring Boot Framework 에서 Client로 부터 오는 요청/응답에 대해 최초/최종 단계의 위치에 존재하며 이를 통해 요청/응답의 정보를 변경하거나 Spring에 의해 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인 할 수 있다.

유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있다.

주로 Spring Framework에서는 request / response Logging 용도로 활용 하거나, 인증과 관련된 Logic들을 해당 Filter에서 처리한다.

이를 선/후 처리함으로써, Service business logic과 분리 시킨다.


Interceptor

Interceptor란 Filter와 매우 유사한 형태로 존재하나, 차이점은 Spring Context에 등록된다.

AOP와 유사한 기능을 제공 할 수 있으며, 주로 인증단계를 처리하거나 Logging을 하는데 사용한다.

이를 선/후 처리함으로써, Service business logic과 분리시킨다.

profile
Backend Developer

0개의 댓글