본문 바로가기
스프링

[스프링] 스프링에서 관리하는 자바 객체, 빈 (Bean)

by kdohyeon (김대니) 2023. 2. 3.
반응형

빈 (Bean) 이란?

스프링 IoC 컨테이너가 관리하는 자바 객체를 의미한다.

자바 객체

일반적인 자바 객체는 아래와 같이 클래스를 선언하여 사용한다.

public class Car {

    private final String name;

    public Car(String name) {
        this.name = name;
    }

    public void turnLeft() {...}
}

public class MainApplication {
    public static void main(String[] args) {
        Car car = new Car("KIA K3"); // 객체 선언
        car.turnLeft(); // 메소드 호출
    }
}

위와 같은 일반 Car 자바 객체를 빈으로 등록하기 위해서는 어떻게 해야 할까?

빈으로 등록하기

일반 자바 객체를 스프링 빈으로 등록하기 위해서는 3가지 방법이 존재한다.

  1. 자바 (Java) 기반
  2. XML 기반
  3. 어노테이션 (Annotation) 기반

자바 (Java) 기반으로 빈 등록하기

자바 기반 빈 등록 방식에서는 Configuration 클래스에 @Bean 어노테이션을 활용하여 빈을 정의할 수 있다.

@Configuration // Configuration 어노테이션을 통해 설정 클래스로 등록
public class AppConfig {
    @Bean // Bean 어노테이션을 통해 "UserRepository" 를 빈으로 등록
    UserRepository userRepository() {
        return new UserRepositoryImpl();
    }
}

XML 기반으로 빈 등록하기

XML 파일에 빈을 정의하는 방법도 있다.

<?xml version="1.0" encoding="UTF-8"?>
<beans>
  <bean id="userRepository" class="com.example.demo.UserRepositoryImpl" />
</beans>

어노테이션 (Annotation) 기반으로 빈 등록하기

빈으로 등록할 수 있는 어노테이션을 각 클래스에 부여하는 방식으로 빈을 정의한다.

@Component, @Repository, @Service 등이 있다.

가장 흔하게 사용하는 방법 중 하나

@Component
public class UserRepositoryImpl implements UserRepository {
    ...
}
반응형

댓글