빈(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 |
댓글