컴공생의 다이어리
[스프링, Spring] @RequiredArgsConstructor 어노테이션 본문
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;
}
728x90
'Development > Spring & SpringBoot' 카테고리의 다른 글
[MyBatis] parameterType, resultType에 내부 클래스(inner class) 사용 (0) | 2023.04.30 |
---|---|
[스프링 부트, Spring Boot] 배너 커스텀 및 적용 (0) | 2022.06.22 |
[스프링 부트, Spring Boot] 시작 배너 없애기 (0) | 2022.05.26 |
[JPA] Auditing (0) | 2022.05.22 |
[스프링 부트, Spring Boot] 서버 포트(port) 변경 (0) | 2022.03.04 |
Comments