[스프링] 스프링 빈

스프링 프레임워크에서 빈(Bean)은 어플리케이션의 핵심을 이루는 객체입니다. 스프링은 이러한 빈들의 생명주기를 관리하고 의존성 주입을 통해 객체 사이의 결합을 느슨하게 만들어줍니다.

빈 생성

빈은 주로 XML, 어노테이션, 자바 설정 클래스를 통해 생성됩니다. XML 설정 방식은 과거에 많이 사용되었지만, 더 최신에는 어노테이션과 자바 설정 클래스를 통한 방식이 더 많이 사용됩니다.

XML을 이용한 빈 생성

<bean id="myBean" class="com.example.MyBean"/>

어노테이션을 이용한 빈 생성

@Component
public class MyBean {
    // 빈의 내용
}

자바 설정 클래스를 이용한 빈 생성

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

빈 주입

스프링은 빈들의 의존성을 주입하는 여러 가지 방법을 제공합니다. 가장 많이 사용되는 방법으로는 생성자 주입, Setter 주입, 필드 주입이 있습니다.

생성자 주입

@Component
public class MyBean {
    private final Dependency dependency;

    @Autowired
    public MyBean(Dependency dependency) {
        this.dependency = dependency;
    }
}

Setter 주입

@Component
public class MyBean {
    private Dependency dependency;

    @Autowired
    public void setDependency(Dependency dependency) {
        this.dependency = dependency;
    }
}

필드 주입

@Component
public class MyBean {
    @Autowired
    private Dependency dependency;
}

빈 스코프

빈의 스코프는 싱글톤(Singleton), 프로토타입(Prototype), 세션(Session) 등으로 설정할 수 있으며, 각각의 스코프에 따라 빈의 생명주기가 달라집니다.

스프링에서 빈들은 기본적으로 싱글톤 스코프로 생성되며, 이외의 스코프를 설정하기 위해서는 @Scope 어노테이션을 사용하거나 XML 설정을 통해 설정할 수 있습니다.

@Component
@Scope("prototype")
public class MyBean {
    // 빈의 내용
}

스프링 빈에 대한 더 많은 정보는 스프링 공식 문서를 통해 확인하실 수 있습니다.