JAVA

[JAVA] AllArgsConstructor vs RequiredArgsConstructor

응디 2022. 2. 10. 17:21

@AllArgsConstructor

  • Autowired로 repository를 바로 주입하면 변경이 불가능하다 따라서 아래 처럼 메소드가 필요
private final MemberRepository memberRepository;

// 생성자 인젝션을 주입함 -> autowired 를 지워도 spring에서 자동으로 주입해줌 
// 이게 AllArgsConstructor를 주입하는것과 같음
@Autowired  
public MemberService(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}

위처럼 생성자 인젝션을 쓰면 한번 생성될때 모든게 완성되서 나중에 누군가 set 할 수 없다.

또한 테스트 케이스를 작성 할 때 유리하다.

but 늘 저렇게 메소드를 작성하기는 어렵다.

→ lombok의 @AllArgsConstructor 사용하면 자동으로 저 메소드를 주입시켜준다.

 


@RequiredArgsConstructor

: 이 어노테이션을 사용하면 final을 사용하고있는 애들만 생성자를 만들어준다.

→ AllArgsConstructor 보다 더 낫다!

 

'JAVA' 카테고리의 다른 글

[JAVA] @NamedQuery 와 @Query  (0) 2022.02.15
[JAVA] 변경감지와 병합(merge)  (0) 2022.02.10
[JAVA] 쿼리 파라미터 남기기  (0) 2022.01.20
[JAVA] fetch join  (0) 2022.01.18
[JAVA] JPA 조인과 서브쿼리  (0) 2022.01.18