YoungSoo

스프링 입문 - 자바 코드로 스프링 빈 등록하기 본문

BE/Spring

스프링 입문 - 자바 코드로 스프링 빈 등록하기

YoungSooSoo 2022. 7. 7. 17:51

이번 시간에는 자바 코드로 스프링 빈 등록하는 방법에 대해 알아볼 예정이다.

실무에서는 주로 정형화된 컨트롤러 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.

그리고 정형화되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다.

그렇기 때문에 두 가지 다 알아야 한다.

 

먼저 시작하기 전에 @Service, @Repository, @Autowired 어노테이션을 다 제거해준다.

지우고 나서 돌리면 당연히 오류가 난다.

SpringConfig

SpringConfig 파일을 새롭게 생성해주고 @Configuration 어노테이션을 넣어준다.또한 자바 코드로 스프링 빈을 등록해줄 때 @Bean 어노테이션도 추가해준다.

이 두 가지 어노테이션을 이용하여 스프링 빈을 등록할 수 있다.

Controller

스프링 빈에 등록되어 오류가 나지 않는 것을 확인할 수 있다.

과거에는 XML로 사용했지만 최근에는 잘 사용하지 않는다고 한다.

 

DI에는 필드 주입, setter 주입, 생성자 주입 3가지 방법이 있다.

앞에서 작성했던 코드에는 생성자를 통해 MemberService를 사용하는데 생성자 주입이라고 한다.

필드 주입

생성자를 넣지 않고 이런 식으로 하는 방식을 필드 주입이라고 한다.

setter 주입

이렇게 작성하는 방식은 setter 주입이다.

이 주입 방식의 단점은 누군가가 Controller를 호출하면 public이어야 하고 노출이 된다는 단점이 있다.

 

그래서 생성자 주입 방식을 권장한다.

@Autowired 주의할 점

DB 연동

현재는 DB 연동을 하지 않아 Repository로 대체하고 있지만 나중에 DB 연동을 하게 된다면 다른 코드는 고치지 않고 간단하게 이름만 바꿔주면 된다.

 

직접 코드로 스프링 빈을 등록할 때 장점이고 컴포넌트 스캔 방법은 여러 코드를 수정해줘야 한다.

 

해당 글은 김영한 님의 인프런 강의를 보고 정리한 글 입니다.

출저 - https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com