스프링에서는 빈을 주입하는 방식이 @Autowried, setter, 생성자가 있지만
그 중에 가장 권장하는 방식은 생성자로 주입받는 방식이다.
@Autowired는 권장하지 않는다.
생성자로 Bean 객체를 받도록 하면 @Autowired와 동일한 효과를 볼수있다
@RequiredArgsConstructor
final로 선언된 모든 필드를 인자값으로 하는 생성자
생성자를 따로 생성하지 않고 롬복 어노테이션을 사용하는 이유는 해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서 수정하는 번거움을 해결하기 위함
롬복 어노테이션이 있으면 해당 컨트롤러에 새로운 서비스를 추가하거나, 기존 컴포넌트를 제거하는 등의 상황이 발생해도 생성자 코드는 전혀 손대지 않아도 된다.
ex)
public class PostsApiController {
private final PostsService postsService;
"/api/v1/posts") (
public Long save( PostsSaveRequestsDto requestsDto) {
return postsService.save(requestsDto);
}
}PostsService를 final로 선언하여 @RequiredArgsConstructor가 생성자를 생성해줌
'DEV > Spring' 카테고리의 다른 글
[SpringBoot] 스프링 시큐리티, OAuth2로 구글로그인 구현 예제 (0) | 2020.02.26 |
---|---|
[SpringBoot] 어노테이션 정리(롬복,테스트,스프링) (0) | 2020.02.24 |
[SpringBoot] 비지니스 로직은 Service에서 처리하는것이 아니다. (1) | 2020.02.18 |
[SpringBoot] 기본 테스트코드 작성하는 법, 어노테이션 정리 (0) | 2020.02.18 |
[JPA] 스프링부트 쿼리 로그보기 (0) | 2020.02.18 |