IoC 컨테이너 2부 - ApplicationContext와 다양한 빈 설정 방법
참고문헌
스프링부트의 편리함
- web 선택 -> 관련 라이브러리들 의존성 관리
IoC 컨테이너 2부: ApplicationContext와 다양한 빈 설정 방법
스프링 IoC 컨테이너의 역할
- 빈 인스턴스 생성
- 의존 관계 설정
- 빈 제공
AppcliationContext 생성
- 설정파일을 xml로 설정할 때 : ClassPathXmlApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
-
설정파일을 java파일로 설정할 때 : AnnotationConfigApplicationContext
- 주입방식 1 : 함수호출
-
- 주입방식 2 : 파라미터로 받아서 넘겨주기 -
- 주입방식 3 : 의존성 주입을 configuraion에서 직접하지 않고, 서비스 로직에서 꺼내와서 주입
- 어노테이션 방식으로 설정을 읽어들일 때 : @ComponentScan
- @ComponentScan 사용
- basePackage는 문자열로 입력해야 하므로 type safety 이슈가 있을 수 있음
- basePackageClass : type safety함
- 해당 클래스가 있는 위치에서부터 @Component 어노테이션이 붙은 클래스들을 모두 빈으로 등록해라.
- @Service, @Repository 등은 @Component를 포함하고 있음
- (스프링부트, 앞선 내용들은 Spring에 해당하는 내용들) @SpringBootApplication 사용
- ApplicationContext를 자동으로 생성
- @ComponentScan이 포함됨
- @ComponentScan도 할 필요가 없어짐
빈 설정
- 빈 명세서
- 빈에 대한 정의를 담고 있다.
- 이름
- 클래스
- 스코프
- 생성자 아규먼트 (constructor)
- 프로퍼트 (setter)
- ..
컴포넌트 스캔
- 설정 방법
- XML 설정에서는 context:component-scan
- 자바 설정에서 @ComponentScan
- 특정 패키지 이하의 모든 클래스 중에 @Component 애노테이션을 사용한 클래스를 빈으로 자동으로 등록 해 줌.