반응형
생성자 어노테이션 @AllArgsConstructor @RequiredArgsConstructor
1. @AllArgsConstructor
- 자동으로 클래스 변수의 선언 순서대로 파라미터로 받는 생성자를 생성한다.
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Human {
String name;
String nickName;
}
아래와 같이 human class 생성자를 사용할수 있다.
public class SampleService {
public static void main(String args[]) {
Human human = new Human("배정남","간지맨");
}
}
2. @RequiredArgsConstructor
- final 이나 @Notnull 키워드가 붙은 필드에 대해서 생성자를 만들어 준다.
final 키워드가 붙은 인스턴스만 생성자를 만들어 준다.
@RequiredArgsConstructor
public class Human {
final String name;
final String nickName;
SampleService service;
public static void main(){
// SampleService 생성자
Human human = new Human("홍길동", "날쌘돌이");
}
}
단순히 생성자를 만들어주는것만으로 끝나지 않고 인젝션도 가능하다.
즉 @RequiredArgsConstruntor를 사용하면 생성자를 활용한 주입도 가능하다.
( @Autowired 어노테이션 생략가능하다. )
필드인젝션과 생성자 인젝션의 차이를 확인해보고 사용방법도 확인해보자.
[필드 인젝션]
@Autowired 필드인젝션으로 주입 사용이 간단하기는 하지만, 변수를 바꾸거나 테스트코드의 작성이 어려워
스프링 4.3부터는 권장하지 않는다고 한다.
@Service
public class Human {
String name;
String nickName;
@Autowired
SampleService sampleService; // 필드 주입
public String sample1(){
return sampleService.testFunction();
}
}
[생성자 인젝션] - @RequiredArgsConstructor를 사용
@RequiredArgsConstructor
public class Human {
String name;
String nickName;
final SampleService sampleService; // final 키워드 사용 : 생성자 주입
}
'프로그래밍 > SPRING' 카테고리의 다른 글
swagger3.0 에러 발생 Failed to start bean 'documentationPluginsBootstrapper' (0) | 2022.05.30 |
---|---|
[Spring boot] 간단 정리 REST API 버전 관리 방법(URI, Parameter, Header, mimetype ) (0) | 2022.05.25 |
Spring boot - Failed to determine a suitable driver class (0) | 2022.05.20 |
@Size 어노테이션이 작동을 안할때 (0) | 2022.05.20 |
Spring @PathVariable 어노테이션 쉽게 정리 (0) | 2022.05.19 |
댓글