Spring Bean

    Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다.

    new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다.

    ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다.

    즉, Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다.

    빈은 스프링 컨테이너에 의해 인스턴스화 되며, 인스턴스화된 빈은 getBean() 메소드를 통해 가져와서 사용할 수 있고, @Autowired 어노테이션으로 의존 객체를 주입 받을 수 있다.

    스프링 빈(bean)을 스프링 IoC 컨테이너에 등록하는 방법

    1. 컴포넌트 스캔과 자동 의존관계 설정

    • 컴포넌트 스캔 - 자바 어노테이션 사용하면 스프링빈으로 자동 등록
      • @Component와 @Component를 포함하는 @Controller, @Service, @Repository, @Configuration 등의 애노테이션이 있으면 스프링 빈으로 자동 등록된다.
      • 스프링 어플리케이션의 초기 구동이 오래 걸릴 수 있다.
      • 파일 이름 순서대로 빈이 생성 된다.
    애노테이션
    설명
    @Controller
    스프링 MVC 컨트롤러로 인식된다.
    @Repository
    스프링 데이터 접근 계층으로 인식하고 해당 계층에서 발생하는 예외는 모두 DataAccessException으로 변환한다.
    @Service
    특별한 처리는 하지 않으나, 개발자들이 핵심 비즈니스 계층을 인식하는데 도움을 준다.
    @Configuration
    스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다. (물론 스프링 빈 스코프가 싱글톤이 아니라면 추가 처리를 하지 않음.)

     

    2. 자바 코드로 직접 스프링 빈 등록

    • config 파일을 생성하여 직접 설정해줄 수 있다. (Controller는 예외)
    @Configuration
    public class SpringConfig {
    
      @Bean
      public UserService userService() {
        return new UserService(userRepository());
      }
    
      @Bean
      public UserRepository userRepository() {
        return new MemoryUserRepository();
      }
    }
    [출처] Spring Bean|작성자 hyeonjin

    '공부 > Spring' 카테고리의 다른 글

    스프링 객체 주입  (0) 2023.02.03
    DAO, DTO, VO, Entity  (0) 2023.01.27
    Session  (0) 2023.01.16
    Spring의 대표적인 Annotation의 역할  (0) 2023.01.10
    스프링, 스프링부트  (0) 2022.12.30

    댓글