스프링 빈을 등록하는 방법

강우엉·2023년 11월 30일
0

study

목록 보기
32/44

💡 Bean이란 무엇일까?

자바 어플리케이션은 어플리케이션 동작을 제공하는 객체들로 이루어져 있다. 이때, 객체들은 독립적으로 동작하는 것 보다 서로 상호작용하여 동작하는 경우가 많다.

이렇게 상호작용하는 객체를 객체의 의존성 이라고 표현한다.

스프링에서는 스프링 컨테이너에 객체들을 생성하면 객체끼리 의존성 주입을 하는 역할을 해준다.
이 때 스프링 컨테이너에 등록한 객체들을 Bean이라고 한다.

💡 스프링 컨테이너에 Bean을 등록하는 두 가지 방법

📌 컴포넌트 스캔

스프링 부트에서 클래스를 스프링 빈으로 등록하는 가장 쉬운 방법은 클래스 위에 @Component 어노테이션을 사용하는것이다.

@Controller, @Service, @Repository 모두 @Component를 포함하고있으며 해당 어노테이션으로 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록된다.

@Controller
public class MemberController {}

@Service
public calss MemverService {}

@Repository
public class MemberRepository {}

📌 자바 코드로 직접 스프링 빈 등록

수동으로 스프링 빈을 등록하려면 자바 설정 클래스를 만들어 사용해야한다.

설정 클래스를 만들고 @Configuration 어노테이션을 클래스 선언부 위에 추가하면 된다. 그리고 특정 타입을 리턴하는 메소드를 만들고, @Bean 어노테이션을 붙여주면 자동으로 해당 타입의 빈 객체가 생성된다.

@Configuration
public class SpringConfig {
	
    @Bean
    public MemberService memberService() {
    	return new MemberService(memberRepository());
    }
    
    @Bean
    public MemberRepository memberRepository() {
    	return new MemoryMemberRepository();
    }
    
}

@Bean 어노테이션의 주요 내용은 아래와 같다.

  • @Configuration 설정된 클래스의 메소드에서 사용가능
  • 메소드의 리턴 객체가 스프링 빈 객체임을 선언함
  • 빈의 이름은 기본적으로 메소드의 이름
  • @Bean(name="name")으로 이름 변경 가능
  • @Scope를 통해 객체 생성을 조정할 수 있음
  • @Component 어노테이션을 통해 @Configuration 없이도 빈 객체를 생성할 수도 있음
  • 빈 객체에 init(), destroy() 등 라이프사이클 메소드를 추가한 다음 @Bean에서 지정할 수 있음
profile
우엉이의 코딩 성장일기💻

0개의 댓글