Development/Spring & SpringBoot

[스프링, Spring] @RequiredArgsConstructor 어노테이션

컴공 K 2022. 6. 1. 00:01

Spring @RequiredArgsConstructor 어노테이션

의존성을 주입해주기 위해서 생성자(Constructor), Setter, Field 타입의 방식을 사용해야 했다. 하지만 lombok(롬복)의 @RequiredArgsConstructor 어노테이션을 사용하면 간단한 방법으로 생성자 주입을 해줄 수 있다.

 

@RequiredArgsConstructor는 final 혹은 @NotNull이 붙은 필드의 생성자를 자동으로 만들어준다. 이를 통해 새로운 필드를 추가할 때 다시 생성자를 만들거나 하는 등의 번거로움을 없앨 수 있다. 하지만 자동적으로 생성자가 만들어지기 때문에 내가 예상하지 못한 결과나 오류가 발생할 수 있기 때문에 그런 점도 염두해둬야 한다.

 

 

아래는 생성자 주입 방법의 차이를 보여주기 위해 첨부한 코드이다.

// @RequiredArgsConstructor 사용
@Service
@RequiredArgsConstructor
public class TestService {
    private final TestRepository1 testRepository1;
    private final TestRepository2 testRepository2;
}
// 생성자(Constructor) 방식
@Service
public class TestService {
    private final TestRepository1 testRepository1;
    private final TestRepository2 testRepository2;

    @Autowired
    public TestService(TestRepository1 testRepository1, TestRepository2 testRepository2) {
        this.testRepository1 = testRepository1;
        this.testRepository2 = testRepository2;

    }
}
// Setter 방식
@Service
public class TestService {
    private TestRepository1 testRepository1;
    private TestRepository2 testRepository2;

    @Autowired
    public void setTestRepository1(TestRepository1 testRepository1) {
        this.testRepository1 = testRepository1;
    }

    @Autowired
    public void setTestRepository2(TestRepository2 testRepository2) {
        this.testRepository2 = testRepository2;
    }
}
// Field 방식
@Service
public class TestService {
    @Autowired
    private TestRepository1 testRepository1;
    @Autowired
    private TestRepository2 testRepository2;
}

 

 

 

 

 

 

https://medium.com/webeveloper/requiredargsconstructor-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%9D%98%EC%A1%B4%EC%84%B1-%EC%A3%BC%EC%9E%85-dependency-injection-4f1b0ac33561

 

@RequiredArgsConstructor 를 이용한 의존성 주입(Dependency Injection)

이 어노테이션은 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다. 주로 의존성 주입(Dependency Injection) 편의성을 위해서 사용되곤 합니다.

medium.com

https://velog.io/@developerjun0615/Spring-RequiredArgsConstructor-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EC%83%9D%EC%84%B1%EC%9E%90-%EC%A3%BC%EC%9E%85

 

[Spring] @RequiredArgsConstructor 어노테이션을 사용한 "생성자 주입"

의존성주입의 종류로는 Constructor(생성자),Setter,Field 타입이 있다.Constructor(생성자)Setter3.Field생성자주입의 단점은 위의 Constructor(생성자) 코드처럼 생성자를 만들기 번거롭다는 것이다. 하지만 이

velog.io

 

728x90