Gidhub BE Developer

Spring 프레임워크 핵심 기술 - Bean 설정 방법 : Java 설정 파일에 직접 Bean 등록 방식

2019-09-17
goodGid

이 글의 코드 및 정보들은 강의를 들으며 정리한 내용을 토대로 작성하였습니다.

개요

  • Application에 Baen 설정 파일을 어떻게 설정하는지

  • 여러 가지 방법을 통해 알아보자.

  • 글의 순서는 큰 상관은 없지만

  • 가능하다면 순서로대 보는걸 추천한다.

  1. XML 파일에 직접 Bean 등록 방식

  2. XML 파일에 Component Scan 방식

  3. Java 설정 파일에 직접 Bean 등록 방식

  4. Java 설정 파일에 Component Scan 방식

  5. @SpringBootApplication


머릿말

  • 앞선 글에서

  • XML을 사용하여

  • 직접 Bean을 등록하거나

  • Component Scan을 통해 Bean을 등록하는 방법에 대해 살펴봤다.


  • 이번에는 Java 설정 파일을 통한

  • Bean을 등록하는 방법에 대해 알아보자.

  • 2가지 방법이 존재하는데

  • 이번 글에서는 Java 설정 파일에 직접 Bean을 등록하는 방법에 대해 알아보자.

  • 다른 방법으로는 Java 설정 파일에 Component Scan 방식이 있다.


Java 파일에 직접 Bean 등록 방식

  • 기본적인 코드 구성은 다음과 같다.

Business Code

BookRepository

public class BookRepository {
}

BookService

public class BookService {

    BookRepository bookRepository;

    public void setBookRepository(BookRepository bookRepository) {
        this.bookRepository = bookRepository;
    }
}

Java 설정 파일

ApplicationConfig.java

@Configuration // Bean 설정 파일임을 알려주기 위한 애노테이션
public class ApplicationConfig {

    @Bean
    public BookRepository bookRepository(){
        return new BookRepository();
    }

    // [1]
    // Setter 방식의 Bean 주입 방식
    @Bean
    public BookService bookService(){
        BookService bookService = new BookService();
        bookService.setBookRepository(bookRepository()); // Setter 방식의 의존성 주입
        return bookService;
    }

    // [2]
    // 메소드 파라미터로 의존성 주입
    @Bean
    public BookService bookService(BookRepository bookRepository){
        BookService bookService = new BookService();
        bookService.setBookRepository(bookRepository);
        return bookService;
    }
}
  • [1]과 [2] 둘 중 편한 방법을 사용하면 된다.

  • 여기에선

  • 사용법을 보여주기위해

  • 2가지 방법을 사용하였다.


Application의 Bean 설정

public class Application {

    public static void main(String[] args) {
        // Java 파일로 ApplicationContext를 생성하기 때문에
        // AnnotationConfigApplicationContext 클래스를 사용한다.
        ApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class);

        // ApplicationContext 안에 등록된 Bean들을 출력해본다.
        String[] beans = context.getBeanDefinitionNames();
        System.out.println(Arrays.toString(beans));

        // context.getBean()을 호출하면 Object 타입이 Return되기 때문에
        // 타입 캐스팅을 해줘야한다.
        BookService bookService = (BookService) context.getBean("bookService");

        // 정상적으로 주입이 되었는지 체크해본다.
        System.out.println(bookService.bookRepository != null);
    }
}

Result

[bookService, bookRepository_id]
true

Java 설정 파일에 직접 Bean 등록의 단점


참고


Comments

Content