1. 스프링 빈(bean)
Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 한다.
이전 포스팅에서 제어의 역전 (IOC, Inversion Of Control)에 대하여 간략하게 알아보았다.
예전에는 Spring 프레임워크에서 ApplicationContext.getBean() 메서드를 사용하여 자바 객체를 가져와 사용했지만, Spring 2.5 버전 이후부터는 @Autowired와 같은 어노테이션 기반의 의존성 주입(Dependency Injection)을 통해 객체를 가져오는 방식이 주로 사용되고 있다.
2. 스프링 빈(bean)을 스프링 컨테이너에 등록하는 방법
2-1. 자바 어노테이션 사용
JAVA에서 Annotation이라는 기능이 있다. 사전상으로는 주석의 의미이지만 Java에서는 주석 이상의 기능을 가지고 있다. Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 소스코드에 추가하면 단순 주석의 기능을 하는 것이 아니라 특별한 기능을 사용할 수 있다.
Spring에서는 여러 가지 Annotation을 사용하지만, Bean을 등록하기 위해서는 @Component Annotation을 사용해야 한다. @Component Annotation이 등록되어 있는 경우에는 Spring이 Annotation을 확인하고 자체적으로 Bean으로 등록한다.
실제 Spring 프로젝트에서 Controller를 등록할 때에는 아래와 같은 Annotation을 사용한다. 아래의 예시에서 Controller 임을 Spring에게 알려주기 위하여 @RestController Annotation을 사용했다.
@RestController
public class Test {
}
@RestController Annotation을 Ctrl + 클릭을 눌러서 이동해 보면 아래와 같은 소스를 확인할 수 있다. @Controller Annotation에는 @Component Annotation이 있는 것을 확인할 수 있다. @Component Annotation으로 인하여 Spring은 해당 Controller를 Bean으로 등록한다.
위와 같이 @Component를 포함하는 @Controller, @Service, @Repository 어노테이션은 스프링 빈으로 자동 등록 된다. 다양한 어노테이션에 대해 다음에 한번 포스트를 해봐야겠다.
2-2 Bean Configuration File에 직접 Bean 등록하는 방법
@Configuration과 @Bean Annotation을 이용하여 Bean을 등록할 수도 있다. 2-1처럼 @Component를 포함하는 어노테이션이 아닌 경우 아래의 예제와 같이 @Configuration을 이용하면 Spring Project에서의 Configuration 역할을 하는 Class를 지정할 수 있다. 해당 File 하위에 Bean으로 등록하고자 하는 Class에 @Bean Annotation을 사용해 주면 간단하게 Bean을 등록할 수 있다.
@Configuration
public class TestConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
'spring 스프링' 카테고리의 다른 글
[HTTP] Get 방식과 Post 방식의 차이점 (0) | 2023.09.05 |
---|---|
@Annotation 스프링 자주 사용하는 어노테이션 정리 (0) | 2023.08.23 |
제어의 역전 (IOC, Inversion Of Control) (0) | 2023.08.20 |
[Spring Boot] 일정 주기로 실행하는 @Scheduled 사용해보기 (0) | 2023.08.15 |
Spring Boot 초기 데이터 설정 방법 정리(data.sql, schema.sql) (0) | 2023.08.09 |