티스토리 뷰

개인공부/Spring

Lombok

날따라해봐요요롷게 2021. 9. 15. 11:27

 

롬복은 컴파일 시 자주 사용되는 코드를 작성하는 기능들을 완성해주는 라이브러리

 

- @setter 

 : setter 메서드를 만들어주는 역할을 한다.

3가지 속성

  • value : 접근 제한 속성을 의미
  • onMethod : setter 메서드의 생성 시 메서드에 추가할 어노테이션을 지정
  • onParam : setter 메서드의 파리미터에 어노테이션을 사용하는 경우 적용한다.

- @Data

 : @ToString, @EqualsAndHashCode, @Getter/Setter, @RequestArgsConstructor를 모두 결합한 형태로 한 번에 자주 사용되는 모든 메서드를 생성한다. 

 

-@Log4j

 : 로그 객체를 생성한다.

 

-@Component

 : 어노테이션이 설정된 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션이다.

@Component 가 있는 클래스를 스프링이 읽을 수 있도록 @ComponentScan 을 통해서 지정되어 있다.

 

- @Autowired

 : 스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을 주입해주라는 표시

 

테스트 어노테이션

- @ContextConfiguratoin 

: 스프링이 실행되면서 어떤 설정 정보를 읽어 들여야 하는지를 명시한다.

속성으로는 locations를 이용한 문자열의 배열로 XML 설정 파일을 명시할 수 있다.

classes 속성으로 @Configuration 이 적용된 클래스를 지정해 줄 수 있다.

 

- @Runwith

 : 테스트 시 필요한 클래스를 지정

 

- @Test

 : junit에서 해당 메서드가 jUnit 상에서 단위 테스트의 대상임을 알려준다. 

 

- 단일 생성자의 묵시적 자동 주입

 : 스프링의 의존성 주입은 (생성자 주입, Setter 주입) 을 사용한다.

생성자 주입 : 객체 생성 시 의존성 주입이 필요하므로 좀 더 업격하게 의존성 주입을 체크한다.

스프링 4.3 이전에는 생성자 주입을 하기 위해서 생성자를 정의하고 @Autowired와 같은 어노테이션을 추가해야 생성자 주입이 이루어 졌다. 하지만 그 이후에는 묵시적으로 생성자 주입이 가능하다.

 

@Component
@ToString
@Getter
public class SampleHotel {
	private Chef chef
    public SampleHotel(Chef chef){	// 생성자를 정의하여 Chef 객체를 주입
  		this.chef = chef;  
    }
}

위의 예제는 생성자를 정의하여 필요한 객체를 주입하는 예제 코드이다.

 

그렇다면 묵시적으로 생성자 주입이 되는 코드를 보자.

 

@Component
@ToString
@Getter
@AllArgsConstructor
// AllArgsConstructor 어노테이션은 인스턴스 변수로 선언된 모든 것을 파라미터로 받는
// 생성자를 작성한다.
public class SampleHotel {
		private Chef chef;
}

어노테이션 @AllArgsConstructor을 사용하여 묵시적 생성자 주입을 적용한다. 

만일 여러 개의 인스턴스 변수들 중에서 특정 변수에 대해서만 생성자를 작성하고 싶다면

@NonNull, @RequiredArgsConstructor 어노테이션을 사용하면 된다.

@Component
@ToString
@Getter
@RequiredArgsConstructor
public class SampleHotel {
		@NonNull
  		private Chef chef;
}

@RequiredArgsConstructor 는 @NonNull, final 이 붙은 인스턴스 변수에 대한 생성자를 만들어 낸다.

 

 

 

 

 

'개인공부 > Spring' 카테고리의 다른 글

스프링2  (0) 2022.05.12
면접 준비 - spring framework  (0) 2022.05.11
스프링1  (0) 2022.05.09
CRUD 구현  (0) 2021.11.02
설정 - ORACLE DB  (0) 2021.09.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함