본문 바로가기
Programming/Spring

@RequiredArgsConstructor 를 사용할때 주의점

by 꾸준함 2023. 3. 18.

@RequiredArgsConstructor 를 사용할때 주의점

의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있습니다.

  1. Constructor(생성자)를 사용한 의존성 주입
public class Example{

    private final FirstService firstService;
    private final SecondService secondService;

    @Autowired
    public Example(FirstService firstService, SecondService secondService) {
   	this.firstService= firstService;
   	this.secondService= secondService;
    }
}
  1. Setter를 사용한 의존성 주입
public  class  Example{

    private final FirstService firstService;
    private final SecondService secondService;

    	@Autowired
			public void setFirstService(FirstService firstService){
				this.firstService = firstService;
			}

    	@Autowired
			public void setSecondService(SecondService secondService){
				this.secondService = secondService;
			}

    }

3.Field를 사용한 의존성 주입

public class Example{

    	@Autowired
    	private FirstService firstService;

    	@Autowired
    	private SecondServie secondService;
    }

보통 DI(의존성 주입)을 방식에는 필드 주입(Field Injection), 수정자 주입(Setter Injection), 생성자 주입(Constructor Injection)의 3가지의 방법이 있는데 이중에서 가장 권장하는 의존성 주입은 생성자 주입 방식입니다.

@RequiredArgsConstructor 어노테이션을 사용한 생성자 주입 방법

생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이를 보완하기위해 lombok을 사용하여 간단한 방법으로 생성자 주입 방식의 코딩을 할 수 있다.

스프링부트를 사용하여 개발할때 우리는 의존성 주입을 위해 @RequiredArgsConstructor를 사용합니다. 이때 굉장히 반드시 알고 가야될 개념이 있습니다.

@RequiredArgsConstructor

  1. final이 붙거나 @Notnull이 붙은 필드의 생성자를 자동 생성해주는 롬복 어노테이션
  2. final 키워드를 사용한 인스턴스들만 Bean객체로 등록을 한다.
  3. final키워드를 사용하지 않고 사용하면 NullPointerException이 발생한다.

'Programming > Spring' 카테고리의 다른 글

Thymeleaf yml설정  (0) 2023.03.19
[JAVA] Spring initializr를 사용하여 Spring Project 시작하기  (0) 2023.03.19