Spring.04_Lombok

이혜민·2024년 8월 23일

spring

목록 보기
5/18

Lombok

: 클래스 작성시 생성자 또는 메소드를 자동으로 생성하는 기능을 제공하기 위한 라이브러리

📍Lombok 라이브러리 사용 방법

1. Lombok 라이브러리를 프로젝트에 빌드 처리

1) MVN Repository 사이트 → 검색어 : lombok → Project Lombok

2) 가장 최신 버전 클릭

3) Maven 복사

4) pom.xml 파일에 dependency 추가

5) 라이브러리 추과 완료

2. 이클립스 종료 후 콘솔을 관리자 권한으로 실행한 후 Lombok 라이브러리 파일이 저장된 로컬 저장소(Local Repository - 사용자 폴더의 .m2 폴더)의 폴더로 이동



3. 콘솔에서 Jar 프로그램을 실행하여 Lombok 라이브러리를 이클립스에서 사용할 수 있도록 설정 - java -jar lombok-1.18.34.jar 입력

4. Jar 프로그램을 실행해 제공된 설치창에서 Lombok 라이브러리를 사용할 이클립스를 선택해 이클립스에 Lombok 라이브러리 설치 - STS 실행 시 Lombok 라이브러리를 사용하기 위함




  • 메모장으로 열기

  • 절대경로 → 상대경로

➡️설정 완료

Lombok 사용

5. 이클립스에서 Lombok 라이브러리가 제공하는 어노테이션을 사용하여 클래스 작성

  • @NoArgsConstructor : 매개변수가 없는 기본 생성자를 제공하기 위한 어노테이션

  • final 제한자를 사용한 필드를 작성한 경우 @NoArgsConstructor 어노테이션을 사용하면 에러 발생

  • @AllArgsConstructor : 모든 필드를 초기화 처리하기 위한 매개변수가 작성된 생성자를 제공하기 위한 어노테이션

  • @Setter : 클래스에 작성된 모든 필드에 대한 Setter 메소드를 제공하기 위한 어노테이션

    • 필드에 @Setter 어노테이션을 사용하면 해당 필드에 대한 Setter 메소드 제공
  • @Getter : 클래스에 작성된 모든 필드에 대한 Getter 메소드를 제공하기 위한 어노테이션

    • 필드에 @Getter 어노테이션을 사용하면 해당 필드에 대한 Getter 메소드 제공
  • @ToString : 클래스에 toString() 메소드를 오버라이드 선언하기 위한 어노테이션

    • 클래스에 작성된 모든 필드값을 결합해 문자열로 반환하는 긴으 제공 - 필드값 확인 목적
  • @Date : 클래스의 Setter 메소드, Getter 메소드, toString() 메소드, equals() 메소드, hashCode() 메소드를 제공하기 위한 어노테이션

  • @Builder : 클래스에 Builder 클래스와 Builder 클래스 관련 메소드를 제공하기 위한 어노테이션

    • Builder 클래스 : 객체 생성시 객체 필드에 필요한 값을 저장하기 위한 메소드를 제공하는 클래스
    • Builder 클래스의 메소드를 호출하여 객체 필드에 필요한 값을 저장하도록 설정
    • 원하는 필드만 초기화 처리할 수 있어 생성자보다 가독성이 좋으며 필드의 순서와 상관없이 초기화 처리할 수 있으므로 객체 생성 편리 - 테스트 프로그램 작성시 사용
  • @Slf4j : 로그 이벤트를 발생할 수 있는 Logger 객체가 저장된 log 필드를 제공하기 위한 어노테이션

    • 현재 클래스에서 로그 이벤트를 발생시켜줄 log 파일 생성
    • priority value 속성값이 warn으로 설정되어 warn을 포함한 상위 로그 이벤트만 로깅정보 기록
  • @RequiredArgsConstructor : final 제한자를 사용한 필드에 대한 초기화 작업을 실행할 수 있는 매개변수가 작성된 생성자를 제공하는 어노테이션

    • log4j.xml 파일에서 logger 엘리먼트에 level 속성을 info로 추가하여 xyz.itwill05.lombik 패키지 안에서는 info 로그 이벤트부터 로깅정보 기록 가능
    • 위와 같이 log 이벤트를 발생시켜 로깅정보 기록

< 수업 순서 - 2024.08.23 >

1. Member : 필드 작성, lombok 어노테이션 작성(기본생성자, 매개변수가 있는 생성자, 메소드 직접 작성할 필요 X)

2. MemberDAO 인터페이스 : 추상메소드 작성

3. MemberDAOImpl : MemberDAO 인터페이스를 상속받은 클래스

4. MemberService 인터페이스 : 추상 메소드 작성

5. MemberServiceImpl : MemberService 인터페이스를 상속받은 클래스

⭐ 레벨에 따른 의존성 주입

1) 필드 레벨의 의존성 주입 : 필드에 @Autowired 이노테이션을 사용하여 스프링 컨테이너에게 클래스의 객체를 제공받아 필드에 저장되도록 의존성 주입

  • 가장 보편적인 의존성 주입 방법이지만 순환 참조시 에러가 발생되지 않아 StackOverflow 발생 가능

2) 매개변수가 작성된 생성자로 의존성 주입 : @RequiredArgsConstructor 어노테이션을 사용해 생성자로 필드를 초기화 처리하기 위해서는 필드에 final 제한자를 사용하여 작성

  • final 제한자 대신 필드에 @NonNull 어노테이션 사용하여 작성 가능
  • @NonNull : @RequiredArgsConstructor 어노테이션을 사용해 초기화 처리하기 위한 필드를 설정하기 위한 어노테이션

3) Constructor 레벨의 의존성 주입 : 매개변수가 작성된 생성자에 @Autowired 어노테이션을 사용하여 스프링 컨테이너에게 클래스의 객체를 제공받아 필드에 저장되도록 의존성 주입

  • 순환 참조 방지를 위해 생성자를 사용한 의존성 주입 - 순환 참조 발생시 예외 발생

6. MemberServiceApp : 출력

  • 출력 콘솔

7. MemberBuilderApp

  • 위와 같이 참조변수를 생성하여 필드값을 변경할 경우 3개의 필드 중 1개만 빠져도 오류가 나서 null 이라도 넣어줘야 함.
  • 필드가 모두 Spring 참조형이므로 쓴 순서대로 필드값이 저장되어 순서면 안된다.


  • 클래스.builder() : 클래스 내부에 선언된 Builder 클래스(내부 정적 클래스)로 Builder 객체를 생성하여 반환하는 정적 메소드
    • Builder 객체를 참조해 클래스의 필드에 필요한 값을 저장할 수 있는 메소드 호출 가능
  • Builder.build() : Builder 클래스가 선언된 클래스(외부클래스)로 객체를 생성하여 반환하는 메소드
    • Builder 객체에 저장된 값을 사용해 객체 필드를 초기화 처리하여 반환

0개의 댓글