Spring Bean 주입하기
728x90
Controller 와 Service 에서 Autowired 가 없는이유
@RequiredArgsConstructor
@Service
public class PostsService {
private final PostsRepository postsRepository;
@Transactional
public Long save(PostsSaveRequestDto requestDto) {
return postsRepository.save(requestDto.toEntitiy()).getId();
}
}
Bean 을 주입받는 방식들이 다음과 같습니다.
- @Autowired
- setter
- constructor
이 중 가장 권장되는 방식이 생성자(constructor) 로 주입받는 방식입니다. (@Autowired 는 지양하는 방식입니다.)
즉 생성자로 Bean 객체를 받도록 하면 @Autowired 와 동일한 효과를 볼 수 있다는 것입니다.
그러면 코드에서 생성자는 어디 있을까요?
@RequiredArgsConstructor
어노테이션이 해결 해줍니다.
final 이 선언된 필드를 인자값으로 하는 생성자를 롬복의 @RequiredArgsConstructor 가 대신 생성해 준 것입니다.
생성자를 직접 쓰지 않고 롬복 어노테이션을 사용한 이유는 해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서
수정해야하는 번거로움을 해결하기 위함입니다.
728x90
'Java > java - spring' 카테고리의 다른 글
JPA 성능 최적화 - N + 1 문제 해결 하기 (0) | 2022.01.30 |
---|---|
Spring boot 에서 Fire base storage 연동 하여 사용하기 (1) | 2022.01.25 |
Aop 를 활용하여 binding result 처리 공통화 하기 (0) | 2022.01.24 |
Spring - Application Context 와 @Bean (0) | 2021.07.16 |
Spring boot 시작하기 (0) | 2021.07.08 |
댓글
이 글 공유하기
다른 글
-
Spring boot 에서 Fire base storage 연동 하여 사용하기
Spring boot 에서 Fire base storage 연동 하여 사용하기
2022.01.25 -
Aop 를 활용하여 binding result 처리 공통화 하기
Aop 를 활용하여 binding result 처리 공통화 하기
2022.01.24 -
Spring - Application Context 와 @Bean
Spring - Application Context 와 @Bean
2021.07.16 -
Spring boot 시작하기
Spring boot 시작하기
2021.07.08