본문 바로가기
Spring (Boot)

빈(Bean) 설정 파일

by taehee.kim.dev 2020. 3. 29.

빈(Bean)의 id는 camel-case를 쓰는게 convention 이다.

 

기본값이 singleton 이다.

 

빈 설정 진화과정

1. xml 파일로 빈 설정(일일이 빈 등록)  : 매우 번거롭다.

2. Component-scan 등장. (특정 패키지 명을 적어서, 해당 패키지 이하에 있는 모든 빈들을 스캐닝해서 IoC container에 등록하겠다.) (스캐닝할 빈 클래스 위에 @Component(@Service, @Controller, @Service)를 붙여줌.) @Autowired로 의존성 주입 가능.

3. xml 파일 설정 -> Java 파일 설정

@Configuration // '이 클래스는 빈 설정 클래스이다' 라는 뜻.
public class ApplicationConfig {


    @Bean // 빈을 등록하겠다.
    public BookRepository bookRepository(){
        return new BookRepository();
    }
    /*
        메소드 이름 : 빈의 id
        반환형 : 빈의 class 타입
        반환하는 것 : 빈으로 등록할 실제 객체
    */

    // 의존성 주입
    @Bean
    public BookService bookService(){
        // 빈으로 등록할 BookService 객체를 생성한다.
        BookService bookService = new BookService();
        // bookService객체의 setBookRepository함수에 BookRepository객체를
        // 매개변수로 넘겨서 의존성 주입을 해줘야 한다.
        // 위에서 정의한 bookRepository()함수가 BookRepository객체의 빈 등록 함수이고,
        // 반환하는 것이 해당 빈 이므로, bookRepository()함수를 매개변수로 넣어
        // 의존성 주입을 해 줄 수 있다.
        bookService.setBookRepository(bookRepository());
        // 의존성 주입을 받은 bookService를 반환하여 IoC container에 최종적으로 등록한다.
        return bookService;
    }

    // 의존성 주입
    // 메소드 파라미터로 받을 수도 있음.
    @Bean
    public BookService bookService(BookRepository bookRepository){
        BookService bookService = new BookService();
        bookService.setBookRepository(bookRepository);
        return bookService;
    }
}

 

public class Application {

    public static void main(String[] args) {
    	// 자바 빈 설정파일 등록
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
    }

}

'Spring (Boot)' 카테고리의 다른 글

API (@ResponseBody)  (0) 2020.11.17
@RequestParam  (0) 2020.11.17
Spring Boot 정적(static) 컨텐츠 처리 방식  (0) 2020.11.17
Spring Boot viewResolver (template engine 방식)  (0) 2020.11.17
빈(Bean) 이란?  (0) 2020.03.28

댓글