-
(스프링 기본) 6 - spring 으로 전환하기개발/Spring 2024. 10. 7. 22:05
@Configuration : 구성정보를 가지고 있는 어노테이션
@Bean : spring 컨테이너에 등록이 됨
ApplicationContext : 스프링은 ApplicationContext 로부터 시작한다. = spring 컨테이너이다.
따라서 이게 @Bean으로 등록한 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에서 관리하게 된다.
이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
즉, 여기서는 discountPolicy 라는 메서드가 호출되어 RateDiscountPolicy 객체가 스프링 컨테이너에 관리되고,
이러한 객체를 스프링 빈이라고 하는 것이다.
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
다음과 같이 AnnotationConfigApplicationContext 를 통해 어노테이션을 기반으로 한 객체를 생성해준다.
파라미터로는 우리가 생성한 AppConfig에 있는 class 를 붙이면
@Bean으로 등록된 객체를 자동으로 spring 컨테이너에 넣어준다.
MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
첫 번째 넣는 파라미터는 이름을 넣어주는데, 이름은 기본적으로 메서드 이름으로 등록된다.
두 번째 넣는 파라미터는 반환 타입을 넣어준다.
여기서는 memberService 를 가져오는 것이고,
반환타입은 MemberService 이므로 두 번째 파라미터는 MemberService.class 가 된다.
기존에는 개발자가 직접 자바코드로 AppConfig 를 작성했지만,
스프링에서는 스프링 컨테이너에 객체를 스프링 빈으로 등록하고,
스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경했다.
'개발 > Spring' 카테고리의 다른 글
(스프링 기본) 8 - 컨테이너에 등록된 모든 빈 조회 (1) 2024.10.09 (스프링 기본) 7 - 스프링 컨테이너 생성 (0) 2024.10.07 (스프링 기본) 5 - 객체 지향 설계와 스프링 (2) 2024.10.02 (스프링 기본) 4 - 좋은 객체 지향 설계 5가지(SOLID) (1) 2024.10.02 (스프링 입문) 3 - 회원 관리 예제 : 백엔드 개발 (비즈니스 요구사항 정리 + 회원 도메인과 리포지토리 만들기 + 회원 리포지토리 테스트 케이스 작성 + 회원 서비스 개발 + 회원 서비스 테스트) (0) 2023.07.30