Back-end/Spring

[Spring] 스프링 빈 Spring Bean

영벨롭 2023. 8. 5. 19:00

★ 스프링 빈 Spring Bean

 Bean 은 Spring IoC 컨테이너가 관리하는 자바 객체로, 스프링에 의해 생성되고 관리되는 인스턴스화된 객체입니다. 

 ApplicationContext(IoC 컨테이너)가 생성하고 관리하며 Bean 을 얻기 위해 ApplicationContext.getBean() 과 같은 메소드를 사용합니다.

 

 Bean 은 클래스의 등록 정보, Getter/Setter 메소드를 포함하며, 컨테이너에 사용되는 설정 메타데이터로 생성됩니다. 

 이때 설정 메타데이터는 XML, 자바 Annotation, 자바 코드로 표현되며, 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체 등을 정의합니다. 

 


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

1. @Component 어노테이션

 스프링에서 Bean 으로 등록하기 위해 @Component 어노테이션을 사용합니다. 

 스프링은 @Component 로 등록되어 있는 경우 자동으로 Bean 으로 등록합니다. 

 @Component 는 ElementType.TYPE 설정이 있으므로 Class 혹은 Interface 에만 붙일 수 있습니다. 

 

 @Component 이외에도 이를 상속받는 @Controller, @Service, @Repository, @Configuration 어노테이션도 Bean 으로 자동 등록됩니다.

  • Controller - 스프링 MVC 의 컨트롤러로 인식됨
  • Repository - Data Access Object 와 같이 실제 데이터 근원과 소통하는 스프링 데이터 접근 계층으로 인식됨. 해당 계층에서 발생하는 예외는 모두 DataAccessException 으로 변환함.
  • Service: 특별한 처리는 하지 않으나, 개발자들이 핵심 비지니스 로직이 구현된 계층으로 인식하는데 도움을 줌
  • Configuration: 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 함
@Controller
public class PostController {
	@GetMapping(“post”)
	public String post(Model model) {
		model.addAttribute(“data”, “this is data!”);
		return “post”;
	}
}

 

2. 직접 Bean 으로 등록 - @Configuration, @Bean 어노테이션

 @Configuration 과 @Bean 어노테이션으로 Bean 을 등록하는 방법으로, 개발자가 컨트롤이 불가능한 외부 라이브러리들을 빈으로 등록하고 싶은 경우 사용합니다. 

 @Bean 은 ElementType.METHOD 와 ElementType.ANNOTATION_TYPE 설정임으로 메소드 또는 어노테이션 단위에만 붙일수 있습니다. 

 @Configuration 은 Bean 에 대해 싱글톤을 보장합니다.

 

 스프링 프로젝트에서 Configuration 역할을 하는 클래스를 지정 후, 인스턴스를 생성하는 메소드 위에 @Bean 어노테이션을 사용하여 Bean 으로 등록합니다. 

@Configuration
public class DemoConfiguration {
    @Bean
    public DemoController demoController() {
        return new DemoController;
    }
}

 

 

 

 

 

 

 

반응형