본문 바로가기
프로그래밍/SPRING

초간단 생성자 @AllArgsConstructor @RequiredArgsConstructor

by 애플 로그 2022. 4. 28.
반응형

생성자 어노테이션 @AllArgsConstructor @RequiredArgsConstructor

 

1. @AllArgsConstructor 

- 자동으로 클래스 변수의 선언 순서대로 파라미터로 받는 생성자를 생성한다.

import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Human {
    String name;
    String nickName;
}

아래와 같이 human class 생성자를 사용할수 있다.

public class SampleService {
    
    public static void main(String args[]) {
            
        Human human = new Human("배정남","간지맨");
    }
}

 

 

2. @RequiredArgsConstructor

- final 이나 @Notnull 키워드가 붙은 필드에 대해서 생성자를 만들어 준다.

final 키워드가 붙은 인스턴스만 생성자를 만들어 준다. 

@RequiredArgsConstructor
public class Human {
    final String name;
    final String nickName;
    SampleService service;
    
    public static void main(){
        // SampleService 생성자
        Human human = new Human("홍길동", "날쌘돌이");
    }
}

 

단순히 생성자를 만들어주는것만으로 끝나지 않고 인젝션도 가능하다.

즉 @RequiredArgsConstruntor를 사용하면 생성자를 활용한 주입도 가능하다.

 

(  @Autowired 어노테이션 생략가능하다.  )

필드인젝션과 생성자 인젝션의 차이를 확인해보고 사용방법도 확인해보자.

 

[필드 인젝션]

@Autowired 필드인젝션으로 주입 사용이 간단하기는 하지만, 변수를 바꾸거나 테스트코드의 작성이 어려워 

스프링 4.3부터는 권장하지 않는다고 한다.

@Service
public class Human {
    String name;
    String nickName;
    @Autowired
    SampleService sampleService; // 필드 주입

    public String sample1(){
        return sampleService.testFunction();
    }
}

 

 

[생성자 인젝션] - @RequiredArgsConstructor를 사용

@RequiredArgsConstructor
public class Human {
    String name;
    String nickName;
    final SampleService sampleService; // final 키워드 사용 : 생성자 주입

}

댓글