[Spring] 스프링 빈(Spring Bean) 개념 정리

Dodam·2023년 7월 20일
2

[Spring]

목록 보기
1/9
post-thumbnail

스프링 빈(Spring Bean)이란?

  • Spring IoC 컨테이너가 관리하는 자바 객체이다.
  • 스프링 프레임워크에서는 Spring Bean을 얻기 위하여 ApplicationContext.getBean()과 같은 메소드를 사용하여 Spring에서 직접 자바 객체를 얻어서 사용한다.

제어의 역전(IoC, Inversion of Controll)

사용자의 제어권을 다른 주체(Spring Container)에게 넘기는 것

일반적으로 프레임워크 없이 개발할 때에는 객체의 생성, 설정, 초기화, 메소드 호출, 소멸(이하 객체의 생명주기)을 프로그래머가 직접 관리한다. 또한 전통적인 프로그래밍에서는 외부 라이브러리를 사용할 때, 개발자가 직접 외부 라이브러리를 호출하는 형태로 이용한다.

하지만, 프레임워크를 사용하면 객체의 생명주기를 모두 프레임워크에 위임할 수 있다. 즉, 외부 라이브러리(Spring)가 프로그래머가 작성한 코드를 호출하고 흐름을 제어한다.

의존성 주입 (DI, Dependency Injection)

개발자가 객체를 직접 생성하는 것이 아닌, 외부에서 생성하여 주입시키는 방식

각 객체간의 의존성을 스프링 컨테이너(Spring Container)가 자동적으로 연결해주는 것으로, 개발자가 빈(Bean) 설정파일에 의존관계가 필요한 정보를 추가하면 스프링 컨테이너가 자동으로 연결해준다.

의존성 주입은 IoC 원칙 하에 객체 간의 결합을 약하게 해주고 유지보수가 좋은 코드를 만들어 준다. 또한 개발자들이 객체를 생성하는 번거로움을 줄이고, 변수 사용과 개발에 더욱 집중할 수 있게 해준다.

Spring Bean을 Spring IoC Container에 등록하는 방법

1. Java Annotation을 사용하는 방법

Spring에서는 Bean을 등록하기 위해서 @Component Annotation을 사용한다. @Component Annotation이 등록되어 있는 경우에는 Spring이 Annotation을 확인하고 자체적으로 Bean으로 등록한다.

// Controller.java

// -- 일부 생략 --
@Component
public @interface Controller {

	@AliasFor(annotation = Component.class)
    String value() default "";
}

2. Bean Configuration File에 직접 Bean을 등록하는 방법

@Configuration과 @Bean Annotation을 이용하여 Bean을 등록할 수 있다. @Configuration을 이용하면 Spring Project에서의 Configuration 역할을 하는 Class를 지정할 수 있다. 해당 File 하위에 Bean으로 등록하고자 하는 Class에 @Bean Annotation을 사용해주면 간단하게 Bean을 등록할 수 있다.

// Hello.java
@Configuration
public class HelloConfiguration {
	@Bean
    public HelloController sampleController(){
    	return new SampleController;
    }
}
profile
⏰ Good things take time

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

좋은 글 감사합니다!

답글 달기