본문 바로가기
BE/Spring Boot

RequiredArgsConstructor

by 이건 뭐야 2024. 2. 28.
@RequiredArgsConstructor
// RequiredArgsConstructor는 final(필수 필드,값)에 대해서 생성자 만드는 역할
public class AuthServiceImplement implements AuthService {

    private final UserRepository userRepository;
    
}


@RequiredArgsConstructor
public class AuthServiceImplement implements AuthService {

    // implement란? - 인터페이스의 구현체
    
    // 필드를 통한 의존성 주입 (인스턴스를 만드는 것이 아닌 외부에서 의존성 주입)
    @Autowired(Bean으로 등록되어 있는 것을 자동으로 주입)
    private UserRepository userRepository;
    
    // 생성자를 통한 의존성 주입 (인스턴스를 만드는 것이 아닌 외부에서 의존성 주입)
    // @Autowired 생략 가능!
    @Autowired
    public AuthServiceImplement(UserRepository userRepository) {
    	this.userRepository = userRepository;
    }
    
    // setter를 통한 의존성 주입 (인스턴스를 만드는 것이 아닌 외부에서 의존성 주입)
    @Autowired
    public void setUserRepository(UserRepository userRepository) {
    	this.userRepository = userRepository;
    }
    
}

 

Spring Document에서 권장하는 방법

 

<생성자를 통한 의존성 주입>
- 필드 메소드나 setter 메소드는 userRepository가 비어있는 상태가 발생하는데 생성자는 비어있는 상태를 막아주기 때문

왜냐하면 인스턴스를 만드려면 userRepository가 반드시 필요하기 때문이다!

또한 Spring에서는 @Autowired는 생략 가능하다. 자동으로 의존성을 주입해준다.

 

하지만!

매번 만들기엔 귀찮기 때문에 lombok에 있는 RequiredArgsConstructor의 기능을 사용해서 final로 지정해주면 final로 지정된 필드에 대해서 생성자를 자동으로 만들어 준다. 따라서 의존성 주입도 자동으로 처리된다.

'BE > Spring Boot' 카테고리의 다른 글

비즈니스 로직(Buisness Logic)  (0) 2024.02.29
Spring Boot 2.7 -> 3.2 변경사항  (0) 2024.02.02